diff --git a/src/xmpp/client.go b/src/xmpp/client.go index a53d920..07f8e9a 100644 --- a/src/xmpp/client.go +++ b/src/xmpp/client.go @@ -93,14 +93,13 @@ func startClient(stream *Stream, jid JID) error { }, } - if rstart, err := stream.SendStart(&start); err != nil { + rstart, err := stream.SendStart(&start) + if err != nil { return err - } else { - if rstart.Name != (xml.Name{nsStreams, "stream"}) { - return fmt.Errorf("unexpected start element: %s", rstart.Name) - } } - + if rstart.Name != (xml.Name{nsStreams, "stream"}) { + return fmt.Errorf("unexpected start element: %s", rstart.Name) + } return nil } @@ -137,7 +136,7 @@ func authenticate(stream *Stream, mechanisms []string, user, password string) er return nil } } - return errors.New("No supported SASL mechanism found.") + return errors.New("no supported SASL mechanism found") } type authHandler struct { @@ -158,26 +157,26 @@ func authenticatePlain(stream *Stream, user, password string) error { } func authenticateResponse(stream *Stream) error { - if se, err := stream.Next(); err != nil { + se, err := stream.Next() + if err != nil { return err - } else { - switch se.Name.Local { - case "success": - if err := stream.Skip(); err != nil { - return err - } - return nil - case "failure": - f := new(saslFailure) - if err := stream.Decode(f, se); err != nil { - return err - } - return fmt.Errorf("Authentication failed: %s", f.Reason.Local) - default: - return fmt.Errorf("Unexpected: %s", se.Name) - } } - panic("unreachable") + + switch se.Name.Local { + case "success": + if err := stream.Skip(); err != nil { + return err + } + return nil + case "failure": + f := new(saslFailure) + if err := stream.Decode(f, se); err != nil { + return err + } + return fmt.Errorf("Authentication failed: %s", f.Reason.Local) + default: + return fmt.Errorf("Unexpected: %s", se.Name) + } } type saslAuth struct { diff --git a/src/xmpp/component.go b/src/xmpp/component.go index 84cd628..0ae3706 100644 --- a/src/xmpp/component.go +++ b/src/xmpp/component.go @@ -35,21 +35,20 @@ func startComponent(stream *Stream, jid JID) (string, error) { var streamId string - if rstart, err := stream.SendStart(&start); err != nil { + rstart, err := stream.SendStart(&start) + if err != nil { return "", err - } else { - if rstart.Name != (xml.Name{nsStreams, "stream"}) { - return "", fmt.Errorf("unexpected start element: %s", rstart.Name) - } - // Find the stream id. - for _, attr := range rstart.Attr { - if attr.Name.Local == "id" { - streamId = attr.Value - break - } + } + if rstart.Name != (xml.Name{nsStreams, "stream"}) { + return "", fmt.Errorf("unexpected start element: %s", rstart.Name) + } + // Find the stream id. + for _, attr := range rstart.Attr { + if attr.Name.Local == "id" { + streamId = attr.Value + break } } - if streamId == "" { return "", errors.New("Missing stream id") } @@ -70,18 +69,14 @@ func handshake(stream *Stream, streamId, secret string) error { } // Get handshake response. - if start, err := stream.Next(); err != nil { - return err - } else { - if start.Name != (xml.Name{nsComponentAccept, "handshake"}) { - return fmt.Errorf("Expected , for %s", start.Name) - } - } - if err := stream.Skip(); err != nil { + start, err := stream.Next() + if err != nil { return err } - - return nil + if start.Name != (xml.Name{nsComponentAccept, "handshake"}) { + return fmt.Errorf("Expected , for %s", start.Name) + } + return stream.Skip() } type saslHandshake struct { diff --git a/src/xmpp/stanza.go b/src/xmpp/stanza.go index 4d48bf1..37ec80d 100644 --- a/src/xmpp/stanza.go +++ b/src/xmpp/stanza.go @@ -115,12 +115,11 @@ type Error struct { } func (e Error) Error() string { - if text := e.Text(); text == "" { + text := e.Text() + if text == "" { return fmt.Sprintf("[%s] %s", e.Type, e.Condition().Local) - } else { - return fmt.Sprintf("[%s] %s, %s", e.Type, e.Condition().Local, text) } - panic("unreachable") + return fmt.Sprintf("[%s] %s, %s", e.Type, e.Condition().Local, text) } type errorText struct { diff --git a/src/xmpp/stream.go b/src/xmpp/stream.go index d2dc777..0a46c2c 100644 --- a/src/xmpp/stream.go +++ b/src/xmpp/stream.go @@ -30,7 +30,7 @@ type Stream struct { incomingNamespace nsMap } -// Create a XML stream connection. A Steam is used by an XMPP instance to +// Create a XML stream connection. A Stream is used by an XMPP instance to // handle sending and receiving XML data over the net connection. func NewStream(addr string, config *StreamConfig) (*Stream, error) { @@ -148,11 +148,11 @@ func (stream *Stream) Next() (*xml.StartElement, error) { } if stream.config.LogStanzas { - if xml, err := collectElement(stream.dec, start, stream.incomingNamespace); err != nil { + xml, err := collectElement(stream.dec, start, stream.incomingNamespace) + if err != nil { return nil, err - } else { - stream.stanzaBuf = xml } + stream.stanzaBuf = xml log.Println("recv:", stream.stanzaBuf) } @@ -170,7 +170,7 @@ func nextStartElement(dec *xml.Decoder) (*xml.StartElement, error) { } switch e := t.(type) { case xml.StartElement: - for i, _ := range e.Attr { + for i := range e.Attr { // Replace URL namespace to xml in order to avoid error on Unmarshal // It's quite ugly, but working for now if e.Attr[i].Name.Space == "http://www.w3.org/XML/1998/namespace" { @@ -183,7 +183,6 @@ func nextStartElement(dec *xml.Decoder) (*xml.StartElement, error) { return nil, io.EOF } } - panic("Unreachable") } // Skip reads tokens until it reaches the end element of the most recent start @@ -205,11 +204,11 @@ func (stream *Stream) Decode(v interface{}, start *xml.StartElement) error { // Explicity lookup next start element to ensure stream is validated, // stanza is logged, etc. if start == nil { - if se, err := stream.Next(); err != nil { + se, err := stream.Next() + if err != nil { return err - } else { - start = se } + start = se } if stream.config.LogStanzas { diff --git a/src/xmpp/xml.go b/src/xmpp/xml.go index 76993ef..6f65dd3 100644 --- a/src/xmpp/xml.go +++ b/src/xmpp/xml.go @@ -76,14 +76,13 @@ func writeXMLAttr(w io.Writer, attr xml.Attr) error { func startElementIter(dec *xml.Decoder) func() *xml.StartElement { return func() *xml.StartElement { for { - if tok, err := dec.Token(); err != nil { + tok, err := dec.Token() + if err != nil { return nil - } else { - if start, ok := tok.(xml.StartElement); ok { - return &start - } + } + if start, ok := tok.(xml.StartElement); ok { + return &start } } - return nil } } diff --git a/src/xmpp/xmpp.go b/src/xmpp/xmpp.go index 02bca72..8215c36 100644 --- a/src/xmpp/xmpp.go +++ b/src/xmpp/xmpp.go @@ -76,8 +76,8 @@ func (fn MatcherFunc) Match(v interface{}) bool { return fn(v) } -// Uniquly identifies a stream fiter. Used to remove a filter that's no longer -// needed. +// Uniquely identifies a stream filter. Used to remove a filter that's no +// longer needed. type FilterId int64 // Implements the error interface for a FilterId.