diff options
author | Shane Kearns <shane.kearns@accenture.com> | 2011-02-25 17:24:50 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@accenture.com> | 2011-02-25 17:32:07 (GMT) |
commit | 37b6d6ef16606c11ba46ef4cb7c96e0989e78d7e (patch) | |
tree | a7a1ee4c4957716ec9b0ea38d95a5b1ece305e61 /src/network/socket/qsocks5socketengine.cpp | |
parent | a722a716641d596b9a799e776e81167a47a261fa (diff) | |
download | Qt-37b6d6ef16606c11ba46ef4cb7c96e0989e78d7e.zip Qt-37b6d6ef16606c11ba46ef4cb7c96e0989e78d7e.tar.gz Qt-37b6d6ef16606c11ba46ef4cb7c96e0989e78d7e.tar.bz2 |
Make socks5 socket engine push session down to real sockets
This ensures the specified QNetworkSession from the QNetworkAccessManager
is used to route the packets, when using a SOCKS proxy.
Reviewed-by: Markus Goetz
Diffstat (limited to 'src/network/socket/qsocks5socketengine.cpp')
-rw-r--r-- | src/network/socket/qsocks5socketengine.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/network/socket/qsocks5socketengine.cpp b/src/network/socket/qsocks5socketengine.cpp index ab3d260..91dfdf3 100644 --- a/src/network/socket/qsocks5socketengine.cpp +++ b/src/network/socket/qsocks5socketengine.cpp @@ -556,6 +556,7 @@ void QSocks5SocketEnginePrivate::initialize(Socks5Mode socks5Mode) udpData = new QSocks5UdpAssociateData; data = udpData; udpData->udpSocket = new QUdpSocket(q); + udpData->udpSocket->setProperty("_q_networksession", q->property("_q_networksession")); udpData->udpSocket->setProxy(QNetworkProxy::NoProxy); QObject::connect(udpData->udpSocket, SIGNAL(readyRead()), q, SLOT(_q_udpSocketReadNotification()), @@ -567,6 +568,7 @@ void QSocks5SocketEnginePrivate::initialize(Socks5Mode socks5Mode) } data->controlSocket = new QTcpSocket(q); + data->controlSocket->setProperty("_q_networksession", q->property("_q_networksession")); data->controlSocket->setProxy(QNetworkProxy::NoProxy); QObject::connect(data->controlSocket, SIGNAL(connected()), q, SLOT(_q_controlSocketConnected()), Qt::DirectConnection); @@ -1376,6 +1378,7 @@ bool QSocks5SocketEngine::bind(const QHostAddress &address, quint16 port) d->udpData->associatePort = d->localPort; d->localPort = 0; QUdpSocket dummy; + dummy.setProperty("_q_networksession", property("_q_networksession")); dummy.setProxy(QNetworkProxy::NoProxy); if (!dummy.bind() || writeDatagram(0,0, d->data->controlSocket->localAddress(), dummy.localPort()) != 0 |