Diff for /libaitmqtt/src/cliside.c between versions 1.3 and 1.3.12.2

version 1.3, 2012/06/28 11:06:17 version 1.3.12.2, 2022/09/15 15:04:44
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, 2011, 2012Copyright 2004 - 2022
         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 61  mqtt_cli_Open(struct sockaddr *addr, u_short timeout) Line 61  mqtt_cli_Open(struct sockaddr *addr, u_short timeout)
         if (!addr)          if (!addr)
                 return NULL;                  return NULL;
   
        cli = malloc(sizeof(mqtt_cli_t));        cli = e_malloc(sizeof(mqtt_cli_t));
         if (!cli) {          if (!cli) {
                 LOGERR;                  LOGERR;
                 return NULL;                  return NULL;
Line 72  mqtt_cli_Open(struct sockaddr *addr, u_short timeout) Line 72  mqtt_cli_Open(struct sockaddr *addr, u_short timeout)
         cli->sock = socket(addr->sa_family, SOCK_STREAM, IPPROTO_TCP);          cli->sock = socket(addr->sa_family, SOCK_STREAM, IPPROTO_TCP);
         if (cli->sock == -1) {          if (cli->sock == -1) {
                 LOGERR;                  LOGERR;
                free(cli);                e_free(cli);
                 return NULL;                  return NULL;
         }          }
   #ifndef __linux__
         if (connect(cli->sock, addr, addr->sa_len) == -1) {          if (connect(cli->sock, addr, addr->sa_len) == -1) {
   #else
           if (connect(cli->sock, addr, addr->sa_family == AF_INET6 ? 
                                   sizeof(struct sockaddr_in6) : 
                                   sizeof(struct sockaddr_in)) == -1) {
   #endif
                 LOGERR;                  LOGERR;
                 close(cli->sock);                  close(cli->sock);
                free(cli);                e_free(cli);
                 return NULL;                  return NULL;
         }          }
   
         cli->buf = mqtt_msgAlloc(USHRT_MAX);  
         if (!cli->buf) {  
                 close(cli->sock);  
                 free(cli);  
                 return NULL;  
         }  
   
         return cli;          return cli;
 }  }
   
Line 101  mqtt_cli_Open(struct sockaddr *addr, u_short timeout) Line 100  mqtt_cli_Open(struct sockaddr *addr, u_short timeout)
 int  int
 mqtt_cli_Close(mqtt_cli_t ** __restrict cli)  mqtt_cli_Close(mqtt_cli_t ** __restrict cli)
 {  {
        int siz = 0;        int siz;
   
         if (!cli || !*cli)          if (!cli || !*cli)
                 return -1;                  return -1;
   
         /* send disconnect */          /* send disconnect */
        siz = mqtt_msgDISCONNECT((*cli)->buf);        (*cli)->buf = mqtt_msgDISCONNECT();
        if (siz > -1) {        if ((*cli)->buf) {
                siz = send((*cli)->sock, (*cli)->buf->msg_base, siz, MSG_NOSIGNAL);                siz = send((*cli)->sock, (*cli)->buf->msg_base, (*cli)->buf->msg_len, MSG_NOSIGNAL);
                 if (siz > -1)                  if (siz > -1)
                         shutdown((*cli)->sock, SHUT_RDWR);                          shutdown((*cli)->sock, SHUT_RDWR);
         }          }
         close((*cli)->sock);          close((*cli)->sock);
   
        mqtt_msgFree(&(*cli)->buf, 42);        mqtt_msgFree(&(*cli)->buf, 0);
   
        free(*cli);        e_free(*cli);
         *cli = NULL;          *cli = NULL;
         return 0;          return 0;
 }  }
Line 128  mqtt_cli_Close(mqtt_cli_t ** __restrict cli) Line 127  mqtt_cli_Close(mqtt_cli_t ** __restrict cli)
  * @cli = connected client   * @cli = connected client
  * @Topics = Topics for subscribes   * @Topics = Topics for subscribes
  * @msgID = Message ID   * @msgID = Message ID
  * @Dup = Duplicated request  
  * @QoS = Message QoS  
  * return: NULL error or !=NULL allocated array with subscribed QoS responses,    * return: NULL error or !=NULL allocated array with subscribed QoS responses, 
 *      must be free() result! *      must be e_free() result!
  */   */
 u_char *  u_char *
mqtt_cli_Subscribe(mqtt_cli_t * __restrict cli, mqtt_subscr_t * __restrict Topics, mqtt_cli_Subscribe(mqtt_cli_t * __restrict cli, mqtt_subscr_t ** __restrict Topics, u_short msgID)
                u_short msgID, u_char Dup, u_char QoS) 
 {  {
         int siz = 0;          int siz = 0;
         u_short mid = 0;          u_short mid = 0;
Line 145  mqtt_cli_Subscribe(mqtt_cli_t * __restrict cli, mqtt_s Line 141  mqtt_cli_Subscribe(mqtt_cli_t * __restrict cli, mqtt_s
                 return NULL;                  return NULL;
   
         /* send subscribe */          /* send subscribe */
        siz = mqtt_msgSUBSCRIBE(cli->buf, Topics, msgID, Dup, QoS);        cli->buf = mqtt_msgSUBSCRIBE(Topics, msgID);
        if (siz == -1)        if (!cli->buf)
                 return NULL;                  return NULL;
        siz = send(cli->sock, cli->buf->msg_base, siz, MSG_NOSIGNAL);        siz = send(cli->sock, cli->buf->msg_base, cli->buf->msg_len, MSG_NOSIGNAL);
         if (siz == -1) {          if (siz == -1) {
                 LOGERR;                  LOGERR;
                 return NULL;                  return NULL;
         } else          } else
                memset(cli->buf->msg_base, 0, cli->buf->msg_len);                mqtt_msgFree(&cli->buf, 0);
   
         if ((siz = mqtt_wait4data(cli->sock, cli->timeout, POLLIN | POLLPRI)) == -1) {          if ((siz = mqtt_wait4data(cli->sock, cli->timeout, POLLIN | POLLPRI)) == -1) {
                 return NULL;                  return NULL;
Line 178  mqtt_cli_Subscribe(mqtt_cli_t * __restrict cli, mqtt_s Line 174  mqtt_cli_Subscribe(mqtt_cli_t * __restrict cli, mqtt_s
         return qoses;          return qoses;
 }  }
   
   #if 0
 /*  /*
  * mqtt_cli_Unsubscribe() - Unsubscribe from broker   * mqtt_cli_Unsubscribe() - Unsubscribe from broker
  *   *
Line 342  mqtt_cli_Publish(mqtt_cli_t * __restrict cli, u_short  Line 339  mqtt_cli_Publish(mqtt_cli_t * __restrict cli, u_short 
 end:  end:
         return wlen;          return wlen;
 }  }
   #endif

Removed from v.1.3  
changed lines
  Added in v.1.3.12.2


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