From 684584b208dda51dbcb660ca006933ef59047fee Mon Sep 17 00:00:00 2001 From: zhouyuyan Date: Sat, 28 Apr 2018 09:37:37 +0800 Subject: [PATCH] fix write logic --- broker/client.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/broker/client.go b/broker/client.go index 4df42e2..447de87 100644 --- a/broker/client.go +++ b/broker/client.go @@ -3,6 +3,7 @@ package broker import ( + "errors" "net" "reflect" "strings" @@ -498,9 +499,11 @@ func (c *client) Close() { c.smu.Unlock() return } + + c.status = Disconnected //wait for message complete time.Sleep(1 * time.Second) - c.status = Disconnected + // c.status = Disconnected if c.conn != nil { c.conn.Close() @@ -540,10 +543,18 @@ func (c *client) Close() { } func (c *client) WriterPacket(packet packets.ControlPacket) error { - if c == nil || packet == nil { + if c.status == Disconnected { return nil } + if packet == nil { + return nil + } + if c.conn == nil { + c.Close() + return errors.New("connect lost ....") + } + c.mu.Lock() err := packet.Write(c.conn) c.mu.Unlock()