Merge pull request #81 from froodian/auth-failure-text

more robust error messages for authentication failures
This commit is contained in:
mattn 2017-01-28 09:53:20 +09:00 committed by Yasuhiro Matsumoto
commit 0fe2a76e77

11
xmpp.go
View File

@ -404,9 +404,13 @@ func (c *Client) init(o *Options) error {
switch v := val.(type) { switch v := val.(type) {
case *saslSuccess: case *saslSuccess:
case *saslFailure: case *saslFailure:
// v.Any is type of sub-element in failure, errorMessage := v.Text
// which gives a description of what failed. if errorMessage == "" {
return errors.New("auth failure: " + v.Any.Local) // v.Any is type of sub-element in failure,
// which gives a description of what failed if there was no text element
errorMessage = v.Any.Local
}
return errors.New("auth failure: " + errorMessage)
default: default:
return errors.New("expected <success> or <failure>, got <" + name.Local + "> in " + name.Space) return errors.New("expected <success> or <failure>, got <" + name.Local + "> in " + name.Space)
} }
@ -699,6 +703,7 @@ type saslSuccess struct {
type saslFailure struct { type saslFailure struct {
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-sasl failure"` XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-sasl failure"`
Any xml.Name `xml:",any"` Any xml.Name `xml:",any"`
Text string `xml:"text"`
} }
// RFC 3920 C.5 Resource binding name space // RFC 3920 C.5 Resource binding name space