From cf77eaf3461bcba0ee1de5a3fa1dc78e052c7a10 Mon Sep 17 00:00:00 2001 From: Marc Magnin Date: Fri, 18 Jan 2019 14:38:51 +0100 Subject: [PATCH] remove subscriptions when a client disconnect --- broker/client.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/broker/client.go b/broker/client.go index 65b7ffa..01ecc9b 100644 --- a/broker/client.go +++ b/broker/client.go @@ -112,6 +112,14 @@ func (c *client) readLoop() { log.Error("read packet error: ", zap.Error(err), zap.String("ClientID", c.info.clientID)) msg := &Message{client: c, packet: DisconnectdPacket} b.SubmitWork(msg) + + // remove subscriptions related to that client + for topic, sub := range c.subMap { + t := []byte(topic) + c.topicsMgr.Unsubscribe(t, sub) + c.session.RemoveTopic(topic) + delete(c.subMap, topic) + } return }