Close keepalive when recv() ends in client.go

160-regression
rcorniere 4 years ago
parent 64e54134df
commit 6e84084bb3

@ -379,11 +379,13 @@ func (c *Client) sendWithWriter(writer io.Writer, packet []byte) error {
// Loop: Receive data from server
func (c *Client) recv(keepaliveQuit chan<- struct{}) {
defer func() {
close(keepaliveQuit)
}()
for {
val, err := stanza.NextPacket(c.transport.GetDecoder())
if err != nil {
c.ErrorHandler(err)
close(keepaliveQuit)
c.disconnected(c.Session.SMState)
return
}
@ -392,7 +394,6 @@ func (c *Client) recv(keepaliveQuit chan<- struct{}) {
switch packet := val.(type) {
case stanza.StreamError:
c.router.route(c, val)
close(keepaliveQuit)
c.streamError(packet.Error.Local, packet.Text)
c.ErrorHandler(errors.New("stream error: " + packet.Error.Local))
// We don't return here, because we want to wait for the stream close tag from the server, or timeout.

Loading…
Cancel
Save