forked from jshiffer/go-xmpp
Fix neglected io.EOF handling
This was probably catched in most cases after commit 9dd92e1, but was at best misleading as it suggested that the end of input stream signal from xml.Decoder was intentionally ignored. Ref mattn/go-xmpp#28
This commit is contained in:
parent
e69bd697cb
commit
127e75bc8b
2
xmpp.go
2
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) {
|
||||
|
11
xmpp_test.go
11
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")
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user