summaryrefslogtreecommitdiff
path: root/xmpp/stream_pair.go
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp/stream_pair.go')
-rw-r--r--xmpp/stream_pair.go27
1 files changed, 26 insertions, 1 deletions
diff --git a/xmpp/stream_pair.go b/xmpp/stream_pair.go
index 3e42cd1..b353947 100644
--- a/xmpp/stream_pair.go
+++ b/xmpp/stream_pair.go
@@ -91,6 +91,31 @@ func closeStream(s *session) {
}
}
+func getCharData(t xml.Token) string {
+ switch c := t.(type) {
+ case xml.CharData:
+ return string(c)
+ default:
+ return ""
+ }
+}
+
func streamFeaturesHandler(e []xml.Token) {
- log.Println("Received stream features")
+ mechanism := xml.Name{`urn:ietf:params:xml:ns:xmpp-sasl`, `mechanism`}
+
+ for i, t := range e {
+ switch s := t.(type) {
+ case xml.StartElement:
+ if s.Name == mechanism {
+ if i+1 < len(e) {
+ if getCharData(e[i+1]) == `PLAIN` {
+ log.Println("Got offer for SASL PLAIN")
+ return
+ }
+ }
+ }
+ }
+ }
+
+ log.Println("No compatible SASL mechanism offered!")
}