summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmpp/jid.go19
-rw-r--r--xmpp/stream_pair.go5
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!")
}