diff --git a/xmpp.go b/xmpp.go index 3666d0a..6af9a3e 100644 --- a/xmpp.go +++ b/xmpp.go @@ -833,7 +833,7 @@ type rosterItem struct { func nextStart(p *xml.Decoder) (xml.StartElement, error) { for { t, err := p.Token() - if err != nil && err != io.EOF || t == nil { + if err != nil || t == nil { return xml.StartElement{}, err } switch t := t.(type) { diff --git a/xmpp_test.go b/xmpp_test.go index 51f02eb..3496d4e 100644 --- a/xmpp_test.go +++ b/xmpp_test.go @@ -3,6 +3,7 @@ package xmpp import ( "bytes" "encoding/xml" + "io" "net" "reflect" "strings" @@ -103,3 +104,13 @@ func TestStanzaError(t *testing.T) { t.Errorf("Recv() = %#v; want %#v", v, chat) } } + +func TestEOFError(t *testing.T) { + var c Client + c.conn = tConnect("") + c.p = xml.NewDecoder(c.conn) + _, err := c.Recv() + if err != io.EOF { + t.Errorf("Recv() did not return io.EOF on end of input stream") + } +}