--- mqtt/src/mqtt_pub.c 2011/12/29 14:13:13 1.1.2.4 +++ mqtt/src/mqtt_pub.c 2012/05/09 13:57:39 1.2.2.6 @@ -50,7 +50,20 @@ static int Publish(int sock) { int siz = 0; + u_short mid = 0; + srandomdev(); + mid = random() % USHRT_MAX; + + printf(" > Execute PUBLISH request #%d ... ", mid); + siz = mqtt_cli_Publish(args->cli, mid, args->Dup, args->QoS, args->Retain, + AIT_GET_STR(&args->Publish), AIT_ADDR(&args->Value), AIT_LEN(&args->Value)); + if (siz == -1) { + printf("Error:: Publish #%d - %s\n", mqtt_GetErrno(), mqtt_GetError()); + return -1; + } else + printf("OK\n"); + return siz; } @@ -61,7 +74,7 @@ main(int argc, char **argv) char ch; ait_val_t val; u_short port = atoi(MQTT_PORT); - int sock, ret = 0; + int ret = 0; if (!(args = malloc(sizeof(struct tagArgs)))) { printf("Error:: in alloc arguments #%d - %s\n", errno, strerror(errno)); @@ -160,22 +173,23 @@ main(int argc, char **argv) Usage(); return 1; } - 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) { + if (!(args->cli = mqtt_cli_Open(&args->addr.sa, args->ka))) { args->free(args); free(args); return 2; } if (args->isFile && !OpenFile()) { + mqtt_cli_Close(&args->cli); args->free(args); free(args); return 3; } - printf("Connected ... "); - switch ((ret = ConnectClient(sock))) { + switch ((ret = ConnectClient(args->cli->sock))) { case -1: printf(">> FAILED!\n"); break; @@ -200,13 +214,11 @@ main(int argc, char **argv) } if (ret == MQTT_RETCODE_ACCEPTED) { - ret = Publish(sock); - shutdown(sock, SHUT_RDWR); - CloseClient(sock); - } else { - close(sock); + ret = (Publish(args->cli->sock) == -1); + } else ret = 4; - } + + mqtt_cli_Close(&args->cli); CloseFile(); args->free(args);