Fix timeout when server doesn't reply with closing stream element.

This commit is contained in:
Martin Dosch 2024-03-28 17:22:02 +01:00
parent da17a46e6f
commit aef1257ed1

View File

@ -339,12 +339,12 @@ func NewClientNoTLS(host, user, passwd string, debug bool) (*Client, error) {
func (c *Client) Close() error {
if c.conn != (*tls.Conn)(nil) {
fmt.Fprintf(c.stanzaWriter, "</stream:stream>\n")
go func() {
<-time.After(10 * time.Second)
c.conn.Close()
}()
// Wait for the server also closing the stream.
for {
select {
case <-time.After(10 * time.Second):
break
default:
ee, err := c.nextEnd()
// If the server already closed the stream it is
// likely to receive an error when trying to parse
@ -358,7 +358,6 @@ func (c *Client) Close() error {
}
}
}
}
return nil
}