Do not use log fatal error when reading from a closed XML stream

This commit is contained in:
Mickael Remond 2017-10-21 15:14:13 +02:00
parent d5221f1a11
commit 1154df3f97
No known key found for this signature in database
GPG key ID: E6F6045D79965AA3
2 changed files with 13 additions and 3 deletions

View file

@ -41,7 +41,7 @@ func TestClient_Connect(t *testing.T) {
func TestClient_NoInsecure(t *testing.T) {
// Setup Mock server
mock := ServerMock{}
mock.Start(t, testXMPPAddress, handlerConnectSuccess)
mock.Start(t, testXMPPAddress, handlerAbortTLS)
// Test / Check result
options := Options{Address: testXMPPAddress, Jid: "test@localhost", Password: "test"}
@ -78,6 +78,16 @@ func handlerConnectSuccess(t *testing.T, c net.Conn) {
bind(t, c, decoder)
}
// We expect client will abort on TLS
func handlerAbortTLS(t *testing.T, c net.Conn) {
decoder := xml.NewDecoder(c)
checkOpenStream(t, c, decoder)
sendStreamFeatures(t, c, decoder) // Send initial features
readAuth(t, decoder)
}
func checkOpenStream(t *testing.T, c net.Conn, decoder *xml.Decoder) {
c.SetDeadline(time.Now().Add(defaultTimeout))
defer c.SetDeadline(time.Time{})

View file

@ -3,8 +3,8 @@ package xmpp
import (
"encoding/xml"
"errors"
"fmt"
"io"
"log"
)
// Reads and checks the opening XMPP stream element.
@ -49,7 +49,7 @@ func nextStart(p *xml.Decoder) (xml.StartElement, error) {
return xml.StartElement{}, nil
}
if err != nil {
log.Fatal("token:", err)
return xml.StartElement{}, fmt.Errorf("nextStart %s", err)
}
switch t := t.(type) {
case xml.StartElement: