Diff for /mqtt/src/daemon.c between versions 1.2.2.35 and 1.2.2.39

version 1.2.2.35, 2012/06/01 10:39:48 version 1.2.2.39, 2012/06/26 13:43:59
Line 24  initSession(int sock, ait_val_t * __restrict v) Line 24  initSession(int sock, ait_val_t * __restrict v)
                 memset(sess, 0, sizeof(struct tagSession));                  memset(sess, 0, sizeof(struct tagSession));
   
         SLIST_INIT(&sess->sess_subscr);          SLIST_INIT(&sess->sess_subscr);
         SLIST_INIT(&sess->sess_sndpkt);  
   
         str = cfg_getAttribute(&cfg, "mqttd", "retry");          str = cfg_getAttribute(&cfg, "mqttd", "retry");
         if (!str)          if (!str)
Line 65  static void Line 64  static void
 finiSession(struct tagSession *sess)  finiSession(struct tagSession *sess)
 {  {
         struct tagStore *store;          struct tagStore *store;
         struct tagPkt *p;  
   
         ioTRACE(5);          ioTRACE(5);
   
Line 92  finiSession(struct tagSession *sess) Line 90  finiSession(struct tagSession *sess)
                 io_free(store);                  io_free(store);
         }          }
   
         while ((p = SLIST_FIRST(&sess->sess_sndpkt))) {  
                 SLIST_REMOVE_HEAD(&sess->sess_sndpkt, pkt_node);  
   
                 io_freeVar(&p->pkt_data);  
                 io_free(p);  
         }  
   
         if (sess->sess_will.msg)          if (sess->sess_will.msg)
                 free(sess->sess_will.msg);                  free(sess->sess_will.msg);
         if (sess->sess_will.topic)          if (sess->sess_will.topic)
Line 261  startSession(sched_task_t *task) Line 252  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 283  startSession(sched_task_t *task) Line 275  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 ... */

Removed from v.1.2.2.35  
changed lines
  Added in v.1.2.2.39


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