summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-04-12 18:06:17 +0100
committerMarkus Goetz <Markus.Goetz@nokia.com>2011-05-09 13:14:10 +0200
commit279883fdf159f3398fa8153b2d6ffe8f3a1ba85b (patch)
tree9e64bc10b5f17283daf184112355f3a9721590d6 /src/network
parent3a76f74e888d62548d7a4e18bdce83c6bc80d6a2 (diff)
Fix error handling in write for socks socket engine
When socks socket engine calls the write function of the native socket engine, it now propagates errors to the abstract socket. Task-number: QTBUG-18713 Reviewed-by: Markus Goetz
Diffstat (limited to 'src/network')
-rw-r--r--src/network/socket/qsocks5socketengine.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/network/socket/qsocks5socketengine.cpp b/src/network/socket/qsocks5socketengine.cpp
index c365635990..88b5aca434 100644
--- a/src/network/socket/qsocks5socketengine.cpp
+++ b/src/network/socket/qsocks5socketengine.cpp
@@ -1540,8 +1540,13 @@ qint64 QSocks5SocketEngine::write(const char *data, qint64 len)
// ### Handle this error.
}
- d->data->controlSocket->write(sealedBuf);
+ qint64 written = d->data->controlSocket->write(sealedBuf);
+ if (written <= 0) {
+ QSOCKS5_Q_DEBUG << "native write returned" << written;
+ return written;
+ }
d->data->controlSocket->waitForBytesWritten(0);
+ //NB: returning len rather than written for the OK case, because the "sealing" may increase the length
return len;
#ifndef QT_NO_UDPSOCKET
} else if (d->mode == QSocks5SocketEnginePrivate::UdpAssociateMode) {