diff --git a/xmpp.go b/xmpp.go index f773bf4..c12dd52 100644 --- a/xmpp.go +++ b/xmpp.go @@ -40,7 +40,6 @@ const ( nsBind = "urn:ietf:params:xml:ns:xmpp-bind" nsClient = "jabber:client" nsSession = "urn:ietf:params:xml:ns:xmpp-session" - nsPing = "urn:xmpp:ping" ) // Default TLS configuration options @@ -601,15 +600,10 @@ func (c *Client) Recv() (stanza interface{}, err error) { case *clientPresence: return Presence{v.From, v.To, v.Type, v.Show, v.Status}, nil case *clientIQ: - //fmt.Printf("$+v", val) - _, vali, err := UnmarshalIqQuery(v.Query) - if err == nil { - switch vali.(type) { - case *serverPingRequest: - err := c.SendResultPing(v.ID, v.From) - if err != nil { - return Chat{}, err - } + if bytes.Equal(v.Query, []byte(``)) { + err := c.SendResultPing(v.ID, v.From) + if err != nil { + return Chat{}, err } } return IQ{ID: v.ID, From: v.From, To: v.To, Type: v.Type, Query: v.Query}, nil @@ -785,10 +779,6 @@ type rosterItem struct { Group []string } -type serverPingRequest struct { - XMLName xml.Name `xml:"urn:xmpp:ping ping"` -} - // Scan XML token stream to find next StartElement. func nextStart(p *xml.Decoder) (xml.StartElement, error) { for { @@ -895,23 +885,3 @@ func (t tee) Read(p []byte) (n int, err error) { } return } - -func UnmarshalIqQuery(Query []byte) (xml.Name, interface{}, error) { - dec := xml.NewDecoder(bytes.NewBuffer(Query)) - - se, err := nextStart(dec) - if err != nil { - return xml.Name{}, nil, err - } - - var nv interface{} - switch se.Name.Space + " " + se.Name.Local { - case nsPing + " ping": - nv = &serverPingRequest{} - } - - if err = dec.DecodeElement(nv, &se); err != nil { - return xml.Name{}, nil, err - } - return se.Name, nv, err -}