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:
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")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user