--- mqtt/src/daemon.c 2012/05/08 14:36:10 1.2.2.30 +++ mqtt/src/daemon.c 2012/05/22 14:15:04 1.2.2.32 @@ -186,6 +186,7 @@ startSession(sched_task_t *task) mqtt_msg_t buf = { basebuf, sizeof basebuf }; mqtthdr_connflgs_t flg; mqtthdr_connack_t cack; + ait_val_t *v; struct tagSession *s, *sess = NULL; int ret, wlen; @@ -194,9 +195,10 @@ startSession(sched_task_t *task) assert(task); if (!TASK_DATA(task)) { + v = TASK_ARG(task); /* flow from accept new clients */ - sess = initSession(TASK_FD(task), TASK_ARG(task)); - io_freeVar(TASK_ARG(task)); + sess = initSession(TASK_FD(task), v); + io_freeVar(&v); if (!sess) { close(TASK_FD(task)); return NULL; @@ -330,7 +332,7 @@ acceptClient(sched_task_t *task) ioDEBUG(1, "Connected client with socket=%d from %s", cli, AIT_GET_STR(v)); if (!schedRead(root, startSession, v, cli, NULL, 0)) { - io_freeVar(v); + io_freeVar(&v); close(cli); ioDEBUG(1, "Terminated client with socket=%d", cli); } @@ -345,7 +347,6 @@ end: int Run(int sock) { - struct tagPub *pub; struct tagSession *sess; struct timespec pl = { 0, 100000000 }; @@ -367,13 +368,6 @@ Run(int sock) schedRun(root, &Kill); /* free all undeleted elements into lists */ - TAILQ_FOREACH(pub, &Pubs, pub_node) { - TAILQ_REMOVE(&Pubs, pub, pub_node); - - AIT_FREE_VAL(&pub->pub_name); - if (pub->pub_packet.msg_base) - free(pub->pub_packet.msg_base); - } TAILQ_FOREACH(sess, &Sessions, sess_node) { TAILQ_REMOVE(&Sessions, sess, sess_node);