--- mqtt/src/daemon.c 2012/05/08 11:45:57 1.2.2.28 +++ mqtt/src/daemon.c 2012/05/08 14:27:46 1.2.2.29 @@ -70,8 +70,14 @@ finiSession(struct tagSession *sess) if (!sess) return; - if (call.FiniSessPUB) - call.FiniSessPUB(&cfg, pub, sess->sess_cid, sess->sess_user, "%"); + if (sess->sess_clean) { + if (call.FiniSessPUB) + call.FiniSessPUB(&cfg, pub, sess->sess_cid, sess->sess_user, "%"); + 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); + } while ((store = SLIST_FIRST(&sess->sess_subscr))) { SLIST_REMOVE_HEAD(&sess->sess_subscr, st_node);