--- libaitmqtt/src/cmds.c 2022/09/15 15:04:44 1.4.2.1 +++ libaitmqtt/src/cmds.c 2022/09/15 15:13:31 1.4.2.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: cmds.c,v 1.4.2.1 2022/09/15 15:04:44 misho Exp $ +* $Id: cmds.c,v 1.4.2.2 2022/09/15 15:13:31 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -89,7 +89,7 @@ mqtt_KeepAlive(int sock, u_short ka, u_char tries) if (sock < 3) return -1; /* error */ - if (mqtt_wait4data(sock, ka, POLLOUT)) + if ((ret = mqtt_wait4data(sock, ka, POLLOUT))) return ret; /* ping request */ if (!(msg = mqtt_msgPINGREQ())) @@ -113,7 +113,7 @@ mqtt_KeepAlive(int sock, u_short ka, u_char tries) LOGERR; break; } - if (!mqtt_readPINGRESP(&msg)) { + if (!mqtt_readPINGRESP(msg)) { ret = 0; /* Host is alive */ break; } else @@ -124,7 +124,6 @@ end: return ret; } -#if 0 /* * mqtt_WillMessage() - Publish WILL message * @@ -138,7 +137,7 @@ int mqtt_WillMessage(int sock, u_short ka, const char *topic, const char *data) { int ret = 0; - mqtt_msg_t msg = { NULL, 0 }; + mqtt_msg_t *msg = NULL; if (!topic) return -1; /* error */ @@ -146,33 +145,31 @@ mqtt_WillMessage(int sock, u_short ka, const char *top /* will message */ if ((ret = mqtt_wait4data(sock, ka, POLLOUT))) return ret; - ret = mqtt_msgPUBLISH(&msg, topic, 0xDEAD, 0, 1, 0, data, data ? strlen(data) : 0); - if (ret == -1) + msg = mqtt_msgPUBLISH(topic, 0xDEAD, 0, 1, 0, data, data ? strlen(data) : 0); + if (!msg) return -1; /* error */ - if ((ret = send(sock, msg.msg_base, ret, MSG_NOSIGNAL)) == -1) { + if ((ret = send(sock, msg->msg_base, msg->msg_len, MSG_NOSIGNAL)) == -1) { LOGERR; - free(msg.msg_base); + mqtt_msgFree(&msg, 0); return -1; /* error */ } else - memset(msg.msg_base, 0, msg.msg_len); + mqtt_msgFree(&msg, 0); /* will ack */ - if ((ret = mqtt_wait4data(sock, ka, POLLIN | POLLPRI))) { - free(msg.msg_base); + if ((ret = mqtt_wait4data(sock, ka, POLLIN | POLLPRI))) return ret; - } /* receive & decode packet */ - if ((ret = recv(sock, msg.msg_base, msg.msg_len, 0)) == -1) { + msg = mqtt_msgAlloc(BUFSIZ); + if ((ret = recv(sock, msg->msg_base, msg->msg_len, 0)) == -1) { LOGERR; - free(msg.msg_base); + mqtt_msgFree(&msg, 0); return -1; /* error */ } - if (mqtt_readPUBACK(&msg)) + if (mqtt_readPUBACK(msg)) ret = 0; /* ok */ else ret = 2; /* semi-error */ - free(msg.msg_base); + mqtt_msgFree(&msg, 0); return ret; } -#endif