diff options
Diffstat (limited to 'xmpp/iq.go')
-rw-r--r-- | xmpp/iq.go | 30 |
1 files changed, 19 insertions, 11 deletions
@@ -7,12 +7,28 @@ import ( "log" ) -type iq struct { +type iqRx struct { + XMLName xml.Name `xml:"jabber:client iq"` + Type string `xml:"type,attr"` + Id string `xml:"id,attr"` + Bind struct{ + Jid string `xml:"jid"` + } `xml:"urn:ietf:params:xml:ns:xmpp-bind bind"` +} + +func (i iqRx) handle(s *session) { + if i.Bind.Jid != "" { + s.jid = i.Bind.Jid + s.sendPresence() + return + } +} + +type bindSet struct { XMLName xml.Name `xml:"jabber:client iq"` Type string `xml:"type,attr,omitempty"` Id string `xml:"id,attr,omitempty"` Bind struct{ - Jid string `xml:"jid,omitempty"` Resource string `xml:"resource,omitempty"` } `xml:"urn:ietf:params:xml:ns:xmpp-bind bind,omitempty"` } @@ -20,7 +36,7 @@ type iq struct { func (s *session) sendBind() { s.resourceReq = fmt.Sprintf("%016x", rand.Uint64()) - req := iq{} + req := bindSet{} req.Id = s.resourceReq req.Type = "set" req.Bind.Resource = "limox-" + fmt.Sprintf("%08x", rand.Uint32()) @@ -30,11 +46,3 @@ func (s *session) sendBind() { log.Println("Could not encode ressource binding!") } } - -func handleIq(s *session, i iq) { - if i.Bind.Jid != "" { - s.jid = i.Bind.Jid - s.sendPresence() - return - } -} |