diff options
| -rw-r--r-- | xmpp/jid.go | 19 | ||||
| -rw-r--r-- | xmpp/stream_pair.go | 5 | 
2 files changed, 24 insertions, 0 deletions
diff --git a/xmpp/jid.go b/xmpp/jid.go index 90c1509..d7107d4 100644 --- a/xmpp/jid.go +++ b/xmpp/jid.go @@ -1,5 +1,9 @@  package xmpp +import ( +	"encoding/xml" +) +  // domainpart extracts the domain name from a JID / XMPP address. See  // https://datatracker.ietf.org/doc/html/rfc7622#section-3.2 for details.  func domainpart(jid string) string { @@ -33,3 +37,18 @@ func username(jid string) string {  	return ""  } + +func hasBind(e []xml.Token) bool { +	bind := xml.Name{`urn:ietf:params:xml:ns:xmpp-bind`, `bind`} + +	for _, v := range e { +		switch s := v.(type) { +		case xml.StartElement: +			if s.Name == bind { +				return true +			} +		} +	} + +	return false +} diff --git a/xmpp/stream_pair.go b/xmpp/stream_pair.go index 693972e..9be880f 100644 --- a/xmpp/stream_pair.go +++ b/xmpp/stream_pair.go @@ -98,5 +98,10 @@ func streamFeaturesHandler(s *session, e []xml.Token) {  		return  	} +	if hasBind(e) { +		log.Println("Stream supports ressource binding") +		return +	} +  	log.Println("Stream has no implemented features!")  }  | 
