--- 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);