fix: close the connection after send connection refused connack packet. (#121)

This commit is contained in:
TrickIt
2021-06-30 14:13:43 +08:00
committed by GitHub
parent f66abe5fcb
commit 068d5e893c
+14 -10
View File
@@ -279,21 +279,25 @@ func (b *Broker) handleConnection(typ int, conn net.Conn) {
connack.ReturnCode = msg.Validate() connack.ReturnCode = msg.Validate()
if connack.ReturnCode != packets.Accepted { if connack.ReturnCode != packets.Accepted {
err = connack.Write(conn) func() {
if err != nil { defer conn.Close()
log.Error("send connack error, ", zap.Error(err), zap.String("clientID", msg.ClientIdentifier)) err = connack.Write(conn)
return if err != nil {
} log.Error("send connack error, ", zap.Error(err), zap.String("clientID", msg.ClientIdentifier))
}
}()
return return
} }
if typ == CLIENT && !b.CheckConnectAuth(string(msg.ClientIdentifier), string(msg.Username), string(msg.Password)) { if typ == CLIENT && !b.CheckConnectAuth(string(msg.ClientIdentifier), string(msg.Username), string(msg.Password)) {
connack.ReturnCode = packets.ErrRefusedNotAuthorised connack.ReturnCode = packets.ErrRefusedNotAuthorised
err = connack.Write(conn) func() {
if err != nil { defer conn.Close()
log.Error("send connack error, ", zap.Error(err), zap.String("clientID", msg.ClientIdentifier)) err = connack.Write(conn)
return if err != nil {
} log.Error("send connack error, ", zap.Error(err), zap.String("clientID", msg.ClientIdentifier))
}
}()
return return
} }