src/network/socket/qnativesocketengine.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
--- a/src/network/socket/qnativesocketengine.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/src/network/socket/qnativesocketengine.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -185,6 +185,9 @@
         // socket to recreate its engine after an error. Note: There's
         // one exception: SocketError(11) bypasses this as it's purely
         // a temporary internal error condition.
+        // Another exception is the way the waitFor*() functions set
+        // an error when a timeout occurs. After the call to setError()
+        // they reset the hasSetSocketError to false
         return;
     }
     if (error != QAbstractSocket::SocketError(11))
@@ -859,6 +862,7 @@
             *timedOut = true;
         d->setError(QAbstractSocket::SocketTimeoutError,
             QNativeSocketEnginePrivate::TimeOutErrorString);
+        d->hasSetSocketError = false; // A timeout error is temporary in waitFor functions
         return false;
     } else if (state() == QAbstractSocket::ConnectingState) {
         connectToHost(d->peerAddress, d->peerPort);
@@ -927,6 +931,7 @@
             *timedOut = true;
         d->setError(QAbstractSocket::SocketTimeoutError,
                     QNativeSocketEnginePrivate::TimeOutErrorString);
+        d->hasSetSocketError = false; // A timeout error is temporary in waitFor functions
         return false;
     } else if (state() == QAbstractSocket::ConnectingState) {
         connectToHost(d->peerAddress, d->peerPort);
@@ -978,6 +983,7 @@
             *timedOut = true;
         d->setError(QAbstractSocket::SocketTimeoutError,
                     QNativeSocketEnginePrivate::TimeOutErrorString);
+        d->hasSetSocketError = false; // A timeout error is temporary in waitFor functions
         return false;
     } else if (state() == QAbstractSocket::ConnectingState) {
         connectToHost(d->peerAddress, d->peerPort);