diff options
| -rw-r--r-- | xmpp/jid.go | 48 | 
1 files changed, 17 insertions, 31 deletions
diff --git a/xmpp/jid.go b/xmpp/jid.go index fd0d7ae..332073b 100644 --- a/xmpp/jid.go +++ b/xmpp/jid.go @@ -56,47 +56,33 @@ func hasBind(e []xml.Token) bool {  	return false  } +type bindRequest struct { +	Bind struct { +		Xmlns string `xml:"xmlns,attr"` +		Resource struct { +			Content string `xml:",chardata"` +		} `xml:"resource"` +	} `xml:"bind"` +} +  func (s *session) sendBind() { +  	s.resourceReq = fmt.Sprintf("%016x", rand.Uint64()) -	iqStart := xml.StartElement{ +	start := xml.StartElement{  		xml.Name{"jabber:client", "iq"},  		[]xml.Attr{  			xml.Attr{xml.Name{"", "id"}, s.resourceReq},  			xml.Attr{xml.Name{"", "type"}, "set"},  		},  	} -	iqEnd := iqStart.End() - -	bindStart := xml.StartElement{ -		xml.Name{"urn:ietf:params:xml:ns:xmpp-bind", "bind"}, -		[]xml.Attr{}, -	} -	bindEnd := bindStart.End() -	resourceStart := xml.StartElement{ -		xml.Name{"", "resource"}, -		[]xml.Attr{}, -	} -	resourceEnd := resourceStart.End() - -	name := xml.CharData("limox-" + fmt.Sprintf("%08x", rand.Uint32())) +	inner := bindRequest{} +	inner.Bind.Xmlns = "urn:ietf:params:xml:ns:xmpp-bind" +	inner.Bind.Resource.Content = "limox-" + fmt.Sprintf("%08x", rand.Uint32()) -	tokens := [...]xml.Token{ -		iqStart, -		bindStart, -		resourceStart, -		name, -		resourceEnd, -		bindEnd, -		iqEnd, -	} - -	for _, v := range tokens { -		err := s.ed.encodeToken(v) -		if err != nil { -			log.Println("Could not encode ressource binding!") -			return -		} +	err := s.ed.tx.EncodeElement(inner, start) +	if err != nil { +		log.Println("Could not encode ressource binding!")  	}  }  | 
