Diff for /mqtt/src/daemon.c between versions 1.2.2.29 and 1.2.2.31

version 1.2.2.29, 2012/05/08 14:27:46 version 1.2.2.31, 2012/05/14 13:04:14
Line 186  startSession(sched_task_t *task) Line 186  startSession(sched_task_t *task)
         mqtt_msg_t buf = { basebuf, sizeof basebuf };          mqtt_msg_t buf = { basebuf, sizeof basebuf };
         mqtthdr_connflgs_t flg;          mqtthdr_connflgs_t flg;
         mqtthdr_connack_t cack;          mqtthdr_connack_t cack;
           ait_val_t *v;
         struct tagSession *s, *sess = NULL;          struct tagSession *s, *sess = NULL;
         int ret, wlen;          int ret, wlen;
   
Line 194  startSession(sched_task_t *task) Line 195  startSession(sched_task_t *task)
         assert(task);          assert(task);
   
         if (!TASK_DATA(task)) {          if (!TASK_DATA(task)) {
                   v = TASK_ARG(task);
                 /* flow from accept new clients */                  /* flow from accept new clients */
                sess = initSession(TASK_FD(task), TASK_ARG(task));                sess = initSession(TASK_FD(task), v);
                io_freeVar(TASK_ARG(task));                io_freeVar(&v);
                 if (!sess) {                  if (!sess) {
                         close(TASK_FD(task));                          close(TASK_FD(task));
                         return NULL;                          return NULL;
Line 244  startSession(sched_task_t *task) Line 246  startSession(sched_task_t *task)
                 ret = MQTT_RETCODE_ACCEPTED;                  ret = MQTT_RETCODE_ACCEPTED;
         }          }
   
           /* db management */
         if (call.FiniSessPUB(&cfg, pub, sess->sess_cid, sess->sess_user, "%") > 0) {          if (call.FiniSessPUB(&cfg, pub, sess->sess_cid, sess->sess_user, "%") > 0) {
                 ioDEBUG(2, "Old session %s should be disconnect!", sess->sess_cid);                  ioDEBUG(2, "Old session %s should be disconnect!", sess->sess_cid);
                 TAILQ_FOREACH(s, &Sessions, sess_node)                  TAILQ_FOREACH(s, &Sessions, sess_node)
Line 253  startSession(sched_task_t *task) Line 256  startSession(sched_task_t *task)
                                 break;                                  break;
                         }                          }
         }          }
   
         if (call.InitSessPUB(&cfg, pub, sess->sess_cid, sess->sess_user, sess->sess_addr,           if (call.InitSessPUB(&cfg, pub, sess->sess_cid, sess->sess_user, sess->sess_addr, 
                                 sess->sess_will.flag, sess->sess_will.topic, sess->sess_will.msg,                                   sess->sess_will.flag, sess->sess_will.topic, sess->sess_will.msg, 
                                 sess->sess_will.qos, sess->sess_will.retain) == -1) {                                  sess->sess_will.qos, sess->sess_will.retain) == -1) {
Line 265  startSession(sched_task_t *task) Line 267  startSession(sched_task_t *task)
                                 sess->sess_cid, sess->sess_addr, sess->sess_user);                                  sess->sess_cid, sess->sess_addr, sess->sess_user);
                 ret = MQTT_RETCODE_ACCEPTED;                  ret = MQTT_RETCODE_ACCEPTED;
         }          }
           /* clean/load session if requested */
           if (sess->sess_clean) {
                   if (call.DeletePUB_subscribe)
                           call.DeletePUB_subscribe(&cfg, pub, sess->sess_cid, "%", sess->sess_user, "%");
                   if (call.WipePUB_topic)
                           call.WipePUB_topic(&cfg, pub, sess->sess_cid, sess->sess_user, -1);
           } else {
                   // todo: read_sql subs and prepare publish
           }
   
         /* Start session task OK ... */          /* Start session task OK ... */
         if (!schedRead(root, dispatchSession, sess, TASK_FD(task), NULL, 0)) {          if (!schedRead(root, dispatchSession, sess, TASK_FD(task), NULL, 0)) {
Line 321  acceptClient(sched_task_t *task) Line 332  acceptClient(sched_task_t *task)
         ioDEBUG(1, "Connected client with socket=%d from %s", cli, AIT_GET_STR(v));          ioDEBUG(1, "Connected client with socket=%d from %s", cli, AIT_GET_STR(v));
   
         if (!schedRead(root, startSession, v, cli, NULL, 0)) {          if (!schedRead(root, startSession, v, cli, NULL, 0)) {
                io_freeVar(v);                io_freeVar(&v);
                 close(cli);                  close(cli);
                 ioDEBUG(1, "Terminated client with socket=%d", cli);                  ioDEBUG(1, "Terminated client with socket=%d", cli);
         }          }

Removed from v.1.2.2.29  
changed lines
  Added in v.1.2.2.31


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