Merge pull request #159 from remicorniere/close_keepalive

Close keepalive when recv() ends in client.go
This commit is contained in:
remicorniere 2020-03-16 11:13:13 +00:00 committed by GitHub
commit ef6de6000a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -379,11 +379,12 @@ func (c *Client) sendWithWriter(writer io.Writer, packet []byte) error {
// Loop: Receive data from server
func (c *Client) recv(keepaliveQuit chan<- struct{}) {
defer 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 +393,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.