diff -r 56cd8111b7f7 -r 41300fa6a67c src/network/socket/qsocks5socketengine.cpp --- a/src/network/socket/qsocks5socketengine.cpp Tue Jan 26 12:42:25 2010 +0200 +++ b/src/network/socket/qsocks5socketengine.cpp Tue Feb 02 00:43:10 2010 +0200 @@ -1235,6 +1235,9 @@ if (!readNotificationPending) connectData->readBuffer.clear(); emitReadNotification(); + data->controlSocket->close(); + // cause a disconnect in the outer socket + emitWriteNotification(); } else if (socks5State == Uninitialized || socks5State == AuthenticationMethodsSent || socks5State == Authenticating @@ -1245,6 +1248,7 @@ } else { q_func()->setError(data->controlSocket->error(), data->controlSocket->errorString()); emitReadNotification(); + emitWriteNotification(); } } @@ -1623,6 +1627,16 @@ } #endif // QT_NO_UDPSOCKET +qint64 QSocks5SocketEngine::bytesToWrite() const +{ + Q_D(const QSocks5SocketEngine); + if (d->data && d->data->controlSocket) { + return d->data->controlSocket->bytesToWrite(); + } else { + return 0; + } +} + int QSocks5SocketEngine::option(SocketOption option) const { Q_D(const QSocks5SocketEngine);