--- mqtt/src/daemon.c 2012/05/08 14:36:10 1.2.2.30 +++ mqtt/src/daemon.c 2012/05/14 13:04:14 1.2.2.31 @@ -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); }