Diff for /libaitmqtt/src/pub.c between versions 1.1.1.1 and 1.1.1.1.2.3

version 1.1.1.1, 2012/01/26 13:07:33 version 1.1.1.1.2.3, 2012/04/27 15:15:12
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 46  SUCH DAMAGE. Line 46  SUCH DAMAGE.
 #include "global.h"  #include "global.h"
   
   
 /* ------------------------------------------------------------------- */  
   
 /*  /*
  * mqtt_msgPUBLISH() Create PUBLISH message   * mqtt_msgPUBLISH() Create PUBLISH message
  *   *
Line 74  mqtt_msgPUBLISH(mqtt_msg_t * __restrict buf, const cha Line 72  mqtt_msgPUBLISH(mqtt_msg_t * __restrict buf, const cha
         if (!buf || !csTopic)          if (!buf || !csTopic)
                 return -1;                  return -1;
         if (QOS > MQTT_QOS_EXACTLY) {          if (QOS > MQTT_QOS_EXACTLY) {
                mqtt_SetErr(EINVAL, "Error:: invalid QoS parameter");                mqtt_SetErr(EINVAL, "Invalid QoS parameter");
                 return -1;                  return -1;
         }          }
         if (!msgID && QOS != MQTT_QOS_ONCE) {          if (!msgID && QOS != MQTT_QOS_ONCE) {
                mqtt_SetErr(EINVAL, "Error:: invalid MessageID parameter must be >0");                mqtt_SetErr(EINVAL, "Invalid MessageID parameter must be >0");
                 return -1;                  return -1;
         }          }
   
Line 114  mqtt_msgPUBLISH(mqtt_msg_t * __restrict buf, const cha Line 112  mqtt_msgPUBLISH(mqtt_msg_t * __restrict buf, const cha
         hdr->mqtt_msg.retain = Retain ? 1 : 0;          hdr->mqtt_msg.retain = Retain ? 1 : 0;
         *hdr->mqtt_len = mqtt_encodeLen(siz - sizeof(struct mqtthdr));          *hdr->mqtt_len = mqtt_encodeLen(siz - sizeof(struct mqtthdr));
   
         mqtt_msgRealloc(buf, siz);  
         return siz;          return siz;
 }  }
   
Line 212  mqtt_msgPUBCOMP(mqtt_msg_t * __restrict buf, u_short m Line 209  mqtt_msgPUBCOMP(mqtt_msg_t * __restrict buf, u_short m
  * @msgID = MessageID   * @msgID = MessageID
  * @pData = Data buffer   * @pData = Data buffer
  * @datLen = Data buffer length, if *datLen == 0 allocate memory for pData   * @datLen = Data buffer length, if *datLen == 0 allocate memory for pData
 * return: NULL error or !=NULL MQTT fixed header * return: NULL error or !=NULL MQTT data buffer
  */   */
struct mqtthdr *void *
 mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * __restrict psTopic, int topicLen,   mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * __restrict psTopic, int topicLen, 
                 u_short *msgID, void * __restrict pData, int *datLen)                  u_short *msgID, void * __restrict pData, int *datLen)
 {  {
Line 224  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _ Line 221  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _
         mqtt_len_t *v;          mqtt_len_t *v;
         caddr_t pos;          caddr_t pos;
   
        if (!buf || !psTopic || !msgID || !pData)        if (!buf || !psTopic || !msgID)
                 return NULL;                  return NULL;
   
         hdr = _mqtt_readHEADER(buf, MQTT_TYPE_PUBLISH, &ret, &len);          hdr = _mqtt_readHEADER(buf, MQTT_TYPE_PUBLISH, &ret, &len);
Line 236  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _ Line 233  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _
         /* topic */          /* topic */
         len -= MQTTHDR_VAR_SIZEOF(var);          len -= MQTTHDR_VAR_SIZEOF(var);
         if (len < 0) {          if (len < 0) {
                mqtt_SetErr(EINVAL, "Error:: short message length %d", len);                mqtt_SetErr(EINVAL, "Short message length %d", len);
                 return NULL;                  return NULL;
         } else {          } else {
                 memset(psTopic, 0, topicLen--);                  memset(psTopic, 0, topicLen--);
Line 248  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _ Line 245  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _
   
         len -= sizeof(mqtt_len_t);          len -= sizeof(mqtt_len_t);
         if (len < 0) {          if (len < 0) {
                mqtt_SetErr(EINVAL, "Error:: short message length %d", len);                mqtt_SetErr(EINVAL, "Short message length %d", len);
                 return NULL;                  return NULL;
         } else {          } else {
                 *msgID = ntohs(v->val);                  *msgID = ntohs(v->val);
Line 257  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _ Line 254  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _
   
         /* data */          /* data */
         if (len < 0) {          if (len < 0) {
                mqtt_SetErr(EINVAL, "Error:: short message length %d", len);                mqtt_SetErr(EINVAL, "Short message length %d", len);
                 return NULL;                  return NULL;
         } else {          } else {
                if (!*datLen) {                if (!*datLen || !pData) {
                        if (!(pData = malloc(len))) {                        if (!(pData = malloc(len + 1))) {
                                 LOGERR;                                  LOGERR;
                                 return NULL;                                  return NULL;
                        } else                        } else {
                                 *datLen = len;                                  *datLen = len;
                                   ((char*) pData)[len] = 0;
                           }
                 }                  }
   
                 memset(pData, 0, *datLen);                  memset(pData, 0, *datLen);
Line 274  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _ Line 273  mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * _
                 memcpy(pData, pos, *datLen);                  memcpy(pData, pos, *datLen);
         }          }
   
        return hdr;        return pData;
 }  }
   
 /*  /*
Line 295  mqtt_readPUBACK(mqtt_msg_t * __restrict buf) Line 294  mqtt_readPUBACK(mqtt_msg_t * __restrict buf)
         if (!hdr)          if (!hdr)
                 return (u_short) -1;                  return (u_short) -1;
         if (len < sizeof(mqtt_len_t)) {          if (len < sizeof(mqtt_len_t)) {
                mqtt_SetErr(EINVAL, "Error:: short message length %d", len);                mqtt_SetErr(EINVAL, "Short message length %d", len);
                 return (u_short) -1;                  return (u_short) -1;
         } else {          } else {
                 pos = buf->msg_base + ret + 1;                  pos = buf->msg_base + ret + 1;
Line 323  mqtt_readPUBREC(mqtt_msg_t * __restrict buf) Line 322  mqtt_readPUBREC(mqtt_msg_t * __restrict buf)
         if (!hdr)          if (!hdr)
                 return (u_short) -1;                  return (u_short) -1;
         if (len < sizeof(mqtt_len_t)) {          if (len < sizeof(mqtt_len_t)) {
                mqtt_SetErr(EINVAL, "Error:: short message length %d", len);                mqtt_SetErr(EINVAL, "Short message length %d", len);
                 return (u_short) -1;                  return (u_short) -1;
         } else {          } else {
                 pos = buf->msg_base + ret + 1;                  pos = buf->msg_base + ret + 1;
Line 351  mqtt_readPUBREL(mqtt_msg_t * __restrict buf) Line 350  mqtt_readPUBREL(mqtt_msg_t * __restrict buf)
         if (!hdr)          if (!hdr)
                 return (u_short) -1;                  return (u_short) -1;
         if (len < sizeof(mqtt_len_t)) {          if (len < sizeof(mqtt_len_t)) {
                mqtt_SetErr(EINVAL, "Error:: short message length %d", len);                mqtt_SetErr(EINVAL, "Short message length %d", len);
                 return (u_short) -1;                  return (u_short) -1;
         } else {          } else {
                 pos = buf->msg_base + ret + 1;                  pos = buf->msg_base + ret + 1;
Line 379  mqtt_readPUBCOMP(mqtt_msg_t * __restrict buf) Line 378  mqtt_readPUBCOMP(mqtt_msg_t * __restrict buf)
         if (!hdr)          if (!hdr)
                 return (u_short) -1;                  return (u_short) -1;
         if (len < sizeof(mqtt_len_t)) {          if (len < sizeof(mqtt_len_t)) {
                mqtt_SetErr(EINVAL, "Error:: short message length %d", len);                mqtt_SetErr(EINVAL, "Short message length %d", len);
                 return (u_short) -1;                  return (u_short) -1;
         } else {          } else {
                 pos = buf->msg_base + ret + 1;                  pos = buf->msg_base + ret + 1;

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.1.2.3


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