--- mqtt/src/mqtt_pub.c 2012/01/24 16:28:28 1.1.2.9 +++ mqtt/src/mqtt_pub.c 2012/04/16 00:09:57 1.2.2.3 @@ -53,7 +53,7 @@ Publish(int sock) int siz = 0; siz = mqtt_msgPUBLISH(args->msg, AIT_GET_STR(&args->Publish), args->MsgID, args->Dup, - args->QoS, args->Retain, AIT_GET_PTR2(&args->Value), AIT_LEN(&args->Value)); + args->QoS, args->Retain, AIT_ADDR(&args->Value), AIT_LEN(&args->Value)); if (siz == -1) { printf("Error:: msgPUBLISH #%d - %s\n", mqtt_GetErrno(), mqtt_GetError()); return -1; @@ -89,24 +89,26 @@ Publish(int sock) goto end; } - siz = mqtt_msgPUBREL(args->msg, args->MsgID); - if (siz == -1) { - printf("Error:: msgPUBREL #%d - %s\n", mqtt_GetErrno(), mqtt_GetError()); - return -1; - } - if (SendTo(sock, siz) == -1) - return -1; + do { + siz = mqtt_msgPUBREL(args->msg, args->MsgID); + if (siz == -1) { + printf("Error:: msgPUBREL #%d - %s\n", mqtt_GetErrno(), mqtt_GetError()); + return -1; + } + if (SendTo(sock, siz) == -1) + return -1; - if ((siz = RecvFrom(sock)) == -1 || !siz) - return -1; + if ((siz = RecvFrom(sock)) == -1 || !siz) + return -1; - siz = mqtt_readPUBCOMP(args->msg); - if (siz == args->MsgID) - return siz; - if (!args->Dup) { - args->Dup++; - return Publish(sock); - } + siz = mqtt_readPUBCOMP(args->msg); + if (siz == args->MsgID) + return siz; + if (!args->Dup) { + args->Dup++; + continue; + } + } while (0); end: printf("Error:: Message not delivered\n"); @@ -224,7 +226,8 @@ main(int argc, char **argv) } if (args->QoS && !args->MsgID) args->MsgID = MQTT_DEFAULT_MSGID; - ioVERBOSE(1) printf("Connecting to %s:%d ...\n", io_n2addr(&args->addr, &val), io_n2port(&args->addr)); + printf("Connecting to %s:%d ... ", io_n2addr(&args->addr, &val), io_n2port(&args->addr)); + AIT_FREE_VAL(&val); if ((sock = InitClient()) == -1) { args->free(args); @@ -238,7 +241,6 @@ main(int argc, char **argv) return 3; } - printf("Connected ... "); switch ((ret = ConnectClient(sock))) { case -1: printf(">> FAILED!\n");