mirror of
https://github.com/FluuxIO/go-xmpp.git
synced 2025-04-01 12:29:27 -07:00
close keepaliveQuit properly
This commit is contained in:
parent
22ba8d1f4e
commit
7ebda735e0
@ -298,11 +298,13 @@ func (c *Client) sendWithWriter(writer io.Writer, packet []byte) error {
|
|||||||
|
|
||||||
// Loop: Receive data from server
|
// Loop: Receive data from server
|
||||||
func (c *Client) recv(state SMState, keepaliveQuit chan<- struct{}) {
|
func (c *Client) recv(state SMState, keepaliveQuit chan<- struct{}) {
|
||||||
|
defer func() {
|
||||||
|
close(keepaliveQuit)
|
||||||
|
}()
|
||||||
for {
|
for {
|
||||||
val, err := stanza.NextPacket(c.transport.GetDecoder())
|
val, err := stanza.NextPacket(c.transport.GetDecoder())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.ErrorHandler(err)
|
c.ErrorHandler(err)
|
||||||
close(keepaliveQuit)
|
|
||||||
c.disconnected(state)
|
c.disconnected(state)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -311,7 +313,6 @@ func (c *Client) recv(state SMState, keepaliveQuit chan<- struct{}) {
|
|||||||
switch packet := val.(type) {
|
switch packet := val.(type) {
|
||||||
case stanza.StreamError:
|
case stanza.StreamError:
|
||||||
c.router.route(c, val)
|
c.router.route(c, val)
|
||||||
close(keepaliveQuit)
|
|
||||||
c.streamError(packet.Error.Local, packet.Text)
|
c.streamError(packet.Error.Local, packet.Text)
|
||||||
c.ErrorHandler(errors.New("stream error: " + packet.Error.Local))
|
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.
|
// We don't return here, because we want to wait for the stream close tag from the server, or timeout.
|
||||||
|
Loading…
Reference in New Issue
Block a user