--- mqtt/src/mqtt_ping.c 2012/01/30 13:39:22 1.1.2.1 +++ mqtt/src/mqtt_ping.c 2012/01/30 22:58:24 1.1.2.2 @@ -40,6 +40,7 @@ Ping(int sock) int siz = 0; struct timeval before, after; ait_val_t val; + struct mqtthdr *hdr; gettimeofday(&before, NULL); @@ -51,17 +52,32 @@ Ping(int sock) if (SendTo(sock, siz) == -1) return -1; - if ((siz = RecvFrom(sock)) == -1 || !siz) - return -1; - siz = mqtt_readPINGRESP(args->msg); - if (siz == -1) { - printf("Error:: readPINGRESP #%d - %s\n", mqtt_GetErrno(), mqtt_GetError()); - return -1; - } + do { + if ((siz = RecvFrom(sock)) == -1 || !siz) + return -1; + else + hdr = (struct mqtthdr*) args->msg->msg_base; + if (hdr->mqtt_msg.type == MQTT_TYPE_PINGREQ) { + siz = mqtt_msgPINGRESP(args->msg); + if (siz == -1) { + printf("Error:: msgPINGRESP #%d - %s\n", mqtt_GetErrno(), mqtt_GetError()); + return -1; + } + if (SendTo(sock, siz) == -1) + return -1; + } else { + siz = mqtt_readPINGRESP(args->msg); + if (siz == -1) { + printf("Error:: readPINGRESP #%d - %s\n", mqtt_GetErrno(), mqtt_GetError()); + return -1; + } else + break; + } + } while (42); gettimeofday(&after, NULL); - printf("Ping MQTT broker %s ... %f sec.\n", io_n2addr(&args->addr, &val), + printf(" + Ping MQTT broker %s ... %f sec.\n", io_n2addr(&args->addr, &val), ((after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6)); AIT_FREE_VAL(&val); @@ -141,7 +157,7 @@ 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) {