diff options
Diffstat (limited to 'src/base/QXmppStream.cpp')
| -rw-r--r-- | src/base/QXmppStream.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/base/QXmppStream.cpp b/src/base/QXmppStream.cpp index 80f2c9f3..4feb266c 100644 --- a/src/base/QXmppStream.cpp +++ b/src/base/QXmppStream.cpp @@ -86,10 +86,13 @@ QXmppStream::~QXmppStream() void QXmppStream::disconnectFromHost() { - sendData(streamRootElementEnd); - if (d->socket) - { - d->socket->flush(); + if (d->socket) { + if (d->socket->state() == QAbstractSocket::ConnectedState) { + sendData(streamRootElementEnd); + d->socket->flush(); + } + // FIXME: according to RFC 6120 section 4.4, we should wait for + // the incoming stream to end before closing the socket d->socket->disconnectFromHost(); } } |
