Diff for /mqtt/src/daemon.c between versions 1.2.2.32 and 1.2.2.38

version 1.2.2.32, 2012/05/22 14:15:04 version 1.2.2.38, 2012/06/26 08:05:58
Line 16  initSession(int sock, ait_val_t * __restrict v) Line 16  initSession(int sock, ait_val_t * __restrict v)
         if (!v)          if (!v)
                 return NULL;                  return NULL;
   
        sess = malloc(sizeof(struct tagSession));        sess = io_malloc(sizeof(struct tagSession));
         if (!sess) {          if (!sess) {
                 ioSYSERR(0);                  ioSYSERR(0);
                 return NULL;                  return NULL;
Line 34  initSession(int sock, ait_val_t * __restrict v) Line 34  initSession(int sock, ait_val_t * __restrict v)
         sess->sess_buf = mqtt_msgAlloc(USHRT_MAX);          sess->sess_buf = mqtt_msgAlloc(USHRT_MAX);
         if (!sess->sess_buf) {          if (!sess->sess_buf) {
                 ioLIBERR(mqtt);                  ioLIBERR(mqtt);
                free(sess);                io_free(sess);
                 return NULL;                  return NULL;
         }          }
   
Line 43  initSession(int sock, ait_val_t * __restrict v) Line 43  initSession(int sock, ait_val_t * __restrict v)
         if (!sess->sess_srv) {          if (!sess->sess_srv) {
                 ioDEBUG(3, "Error:: in srv_Init #%d - %s", mqtt_GetErrno(), mqtt_GetError());                  ioDEBUG(3, "Error:: in srv_Init #%d - %s", mqtt_GetErrno(), mqtt_GetError());
                 mqtt_msgFree(&sess->sess_buf, 42);                  mqtt_msgFree(&sess->sess_buf, 42);
                free(sess);                io_free(sess);
                 return NULL;                  return NULL;
         } else {          } else {
                 mqtt_srv_setCmd(sess->sess_srv, MQTT_TYPE_CONNECT, cmdCONNECT);                  mqtt_srv_setCmd(sess->sess_srv, MQTT_TYPE_CONNECT, cmdCONNECT);
Line 87  finiSession(struct tagSession *sess) Line 87  finiSession(struct tagSession *sess)
                 if (store->st_subscr.sub_value.msg_base)                  if (store->st_subscr.sub_value.msg_base)
                         free(store->st_subscr.sub_value.msg_base);                          free(store->st_subscr.sub_value.msg_base);
   
                free(store);                io_free(store);
         }          }
   
         if (sess->sess_will.msg)          if (sess->sess_will.msg)
Line 101  finiSession(struct tagSession *sess) Line 101  finiSession(struct tagSession *sess)
         mqtt_srv_Fini(&sess->sess_srv);          mqtt_srv_Fini(&sess->sess_srv);
         mqtt_msgFree(&sess->sess_buf, 42);          mqtt_msgFree(&sess->sess_buf, 42);
   
        free(sess);        io_free(sess);
 }  }
   
 static void *  static void *
Line 122  leaveClient(sched_task_t *task) Line 122  leaveClient(sched_task_t *task)
         ret = mqtt_msgDISCONNECT(sess->sess_buf);          ret = mqtt_msgDISCONNECT(sess->sess_buf);
         send(TASK_FD(task), sess->sess_buf->msg_base, ret, MSG_NOSIGNAL);          send(TASK_FD(task), sess->sess_buf->msg_base, ret, MSG_NOSIGNAL);
   
        ioDEBUG(1, "Close socket=%d", TASK_FD(task));        ioDEBUG(1, "Close socket=%ld", (long) TASK_FD(task));
         call.LOG(logg, "Session %s stopped from %s for user %s.\n", sess->sess_cid,           call.LOG(logg, "Session %s stopped from %s for user %s.\n", sess->sess_cid, 
                         sess->sess_addr, sess->sess_user);                          sess->sess_addr, sess->sess_user);
   
Line 155  dispatchSession(sched_task_t *task) Line 155  dispatchSession(sched_task_t *task)
                 finiSession(sess);                  finiSession(sess);
                 return NULL;                  return NULL;
         }          }
           ioDEBUG(0, "++++++ret=%d\n", ret);
   
         do {          do {
                 /* dispatch message type */                  /* dispatch message type */
Line 252  startSession(sched_task_t *task) Line 253  startSession(sched_task_t *task)
                 TAILQ_FOREACH(s, &Sessions, sess_node)                  TAILQ_FOREACH(s, &Sessions, sess_node)
                         if (!strcmp(s->sess_cid, sess->sess_cid)) {                          if (!strcmp(s->sess_cid, sess->sess_cid)) {
                                 /* found stale session & disconnect it! */                                  /* found stale session & disconnect it! */
                                schedWrite(root, leaveClient, sess, TASK_FD(task), NULL, 0);                                schedCancelby(root, taskMAX, CRITERIA_FD, (void*) s->sess_sock, NULL);
                                 schedWrite(root, leaveClient, s, s->sess_sock, NULL, 0);
                                 break;                                  break;
                         }                          }
         }          }
Line 274  startSession(sched_task_t *task) Line 276  startSession(sched_task_t *task)
                 if (call.WipePUB_topic)                  if (call.WipePUB_topic)
                         call.WipePUB_topic(&cfg, pub, sess->sess_cid, sess->sess_user, -1);                          call.WipePUB_topic(&cfg, pub, sess->sess_cid, sess->sess_user, -1);
         } else {          } else {
                // todo: read_sql subs and prepare publish                // TODO: read_sql subs and prepare publish
         }          }
   
         /* Start session task OK ... */          /* Start session task OK ... */
Line 289  startSession(sched_task_t *task) Line 291  startSession(sched_task_t *task)
 end:    /* close client connection */  end:    /* close client connection */
         wlen = mqtt_msgCONNACK(sess->sess_buf, ret);          wlen = mqtt_msgCONNACK(sess->sess_buf, ret);
         if ((wlen = send(TASK_FD(task), sess->sess_buf->msg_base, wlen, 0)) == -1) {          if ((wlen = send(TASK_FD(task), sess->sess_buf->msg_base, wlen, 0)) == -1) {
                ioDEBUG(3, "Error:: send(%d) #%d - %s", TASK_FD(task), errno, strerror(errno));                ioDEBUG(3, "Error:: send(%ld) #%d - %s", (long) TASK_FD(task), errno, strerror(errno));
         } else          } else
                 ioDEBUG(5, "Sended %d bytes", wlen);                  ioDEBUG(5, "Sended %d bytes", wlen);
   
         if (ret != MQTT_RETCODE_ACCEPTED) {          if (ret != MQTT_RETCODE_ACCEPTED) {
                ioDEBUG(1, "Close client %s with socket=%d", sess->sess_addr, TASK_FD(task));                ioDEBUG(1, "Close client %s with socket=%ld", sess->sess_addr, (long) TASK_FD(task));
                 finiSession(sess);                  finiSession(sess);
         }          }
         return NULL;          return NULL;

Removed from v.1.2.2.32  
changed lines
  Added in v.1.2.2.38


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