diff --git a/client.go b/client.go index 48f19ae..bd40c38 100644 --- a/client.go +++ b/client.go @@ -309,19 +309,6 @@ func (c *Client) recv(state SMState, keepaliveQuit chan<- struct{}) { // Handle stream errors switch packet := val.(type) { - case *stanza.IQ: - if val.(*stanza.IQ).Any != nil && val.(*stanza.IQ).Any.XMLName.Local == "ping" { - err = c.Send(&stanza.IQ{Attrs: stanza.Attrs{ - Id: val.(*stanza.IQ).Id, - Type: stanza.IQTypeResult, - From: val.(*stanza.IQ).To, - To: val.(*stanza.IQ).From, - }}) - if err != nil { - c.ErrorHandler(err) - } - continue - } case stanza.StreamError: c.router.route(c, val) close(keepaliveQuit) diff --git a/router.go b/router.go index f20af5b..3e6d0e2 100644 --- a/router.go +++ b/router.go @@ -55,6 +55,15 @@ func (r *Router) route(s Sender, p stanza.Packet) { close(route.result) return } + if iq.Any != nil && iq.Any.XMLName.Local == "ping" { + _ = s.Send(&stanza.IQ{Attrs: stanza.Attrs{ + Id: iq.Id, + Type: stanza.IQTypeResult, + From: iq.To, + To: iq.From, + }}) + return + } } var match RouteMatch