Diff for /mqtt/src/mqtt_subs.c between versions 1.2.2.17 and 1.2.2.18

version 1.2.2.17, 2012/06/26 08:05:58 version 1.2.2.18, 2012/07/02 12:52:19
Line 148  pubRX(sched_task_t *task) Line 148  pubRX(sched_task_t *task)
         void *data = NULL;          void *data = NULL;
         u_short mid;          u_short mid;
         time_t tim;          time_t tim;
           struct mqtthdr *hdr;
   
         rlen = RecvFrom(TASK_FD(task));          rlen = RecvFrom(TASK_FD(task));
         if (rlen == -1)          if (rlen == -1)
Line 156  pubRX(sched_task_t *task) Line 157  pubRX(sched_task_t *task)
                 Kill++;                  Kill++;
                 return NULL;                  return NULL;
         }          }
         siz = mqtt_readPUBLISH(args->msg, szTopic, sizeof szTopic, &mid, &data);  
         if (siz == -1)  
                 goto end;  
   
        /* send to output */        while (rlen > 0) {
        tim = time(NULL);                hdr = (struct mqtthdr*) args->msg->msg_base;
        strftime(szTime, sizeof szTime, "%Y-%m-%d %H:%M:%S", localtime(&tim)); 
        fprintf(TASK_ARG(task), "\n[%s] Message ID: %04hu, Length: %u, Topic: %s\n",  
                        szTime, mid, siz, szTopic); 
   
        if (data) {                switch (hdr->mqtt_msg.type) {
                fputs((const char*) data, TASK_ARG(task));                        case MQTT_TYPE_PUBLISH:
                free(data);                                siz = mqtt_readPUBLISH(args->msg, szTopic, sizeof szTopic, &mid, &data);
        }                                if (siz == -1)
                                         goto end;
                                 else {
                                         siz = mqtt_pktLen(hdr);
                                         rlen -= siz;
                                         ioVERBOSE(4) printf("Remains %d bytes, packet %d bytes\n", 
                                                         rlen, siz);
                                 }
   
        fprintf(TASK_ARG(task), "\n");                                /* send to output */
        fflush(TASK_ARG(task));                                tim = time(NULL);
                                 strftime(szTime, sizeof szTime, "%Y-%m-%d %H:%M:%S", localtime(&tim));
                                 fprintf(TASK_ARG(task), "\n[%s] Message ID: %04hu, QoS: %hhu, "
                                                 "Length: %u, Topic: %s\n", szTime, mid, hdr->mqtt_msg.qos, 
                                                 siz, szTopic);
   
        /* if exists exec script */                                if (data) {
        if (!AIT_ISEMPTY(&args->Value))                                        fputs((const char*) data, TASK_ARG(task));
                schedEvent(root, execProc, io_strdup(szTopic), mid, data, siz);                                        free(data);
                                 }
 
                                 fprintf(TASK_ARG(task), "\n");
                                 fflush(TASK_ARG(task));
 
                                 /* if exists exec script */
                                 if (!AIT_ISEMPTY(&args->Value))
                                         schedEvent(root, execProc, io_strdup(szTopic), mid, data, siz);
 
                                 memmove(args->msg->msg_base, args->msg->msg_base + siz, rlen);
                                 break;
                         case MQTT_TYPE_PINGREQ:
                                 siz = mqtt_msgPINGRESP(args->msg);
                                 if (siz == -1)
                                         goto end;
                                 else
                                         rlen -= siz;
 
                                 /* send ping reply */
                                 if (SendTo(TASK_FD(task), siz) == -1)
                                         goto end;
 
                                 memmove(args->msg->msg_base, args->msg->msg_base + siz, rlen);
                                 break;
                         default:
                                 ioVERBOSE(1) printf("Unwanted message type #%d ...\n", hdr->mqtt_msg.type);
                                 goto end;
                 }
         }
 end:  end:
         schedReadSelf(task);          schedReadSelf(task);
         return NULL;          return NULL;

Removed from v.1.2.2.17  
changed lines
  Added in v.1.2.2.18


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>