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…
Reference in New Issue
Block a user