diff options
-rw-r--r-- | xmpp/stream_pair.go | 27 |
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!") } |