--- mqtt/src/mqttd_calls.c 2012/05/08 14:27:46 1.2.2.15 +++ mqtt/src/mqttd_calls.c 2012/05/08 14:36:10 1.2.2.16 @@ -210,8 +210,14 @@ cmdCONNECT(void *srv, int len, void *arg) ioDEBUG(5, "Exec CONNECT session"); TAILQ_REMOVE(&Sessions, sess, sess_node); - 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);