--- mqtt/src/mqttd_calls.c 2012/05/08 13:04:02 1.2.2.13 +++ mqtt/src/mqttd_calls.c 2012/05/08 14:27:46 1.2.2.15 @@ -72,7 +72,7 @@ cmdSUBSCRIBE(void *srv, int len, void *arg) /* add to db */ for (i = 0; i < siz; i++) { - if (call.WritePUB_subscribe(&cfg, pub, mid, subs[i].sub_topic.msg_base, + if (call.WritePUB_subscribe(&cfg, pub, sess->sess_cid, mid, subs[i].sub_topic.msg_base, sess->sess_user, sess->sess_addr, subs[i].sub_ret) > 0) { store = malloc(sizeof(struct tagStore)); if (!store) { @@ -138,12 +138,17 @@ cmdUNSUBSCRIBE(void *srv, int len, void *arg) !strcmp(store->st_subscr.sub_topic.msg_base, subs[i].sub_topic.msg_base)) { SLIST_REMOVE(&sess->sess_subscr, store, tagStore, st_node); + + if (store->st_subscr.sub_topic.msg_base) + free(store->st_subscr.sub_topic.msg_base); + if (store->st_subscr.sub_value.msg_base) + free(store->st_subscr.sub_value.msg_base); free(store); } } - call.DeletePUB_subscribe(&cfg, pub, subs[i].sub_topic.msg_base, - sess->sess_user, sess->sess_addr); + call.DeletePUB_subscribe(&cfg, pub, sess->sess_cid, subs[i].sub_topic.msg_base, + sess->sess_user, "%"); } /* send acknowledge */