37 lines
1.6 KiB
Diff
37 lines
1.6 KiB
Diff
qt4_lwip_connect_semantics_adaption.patch
|
|
|
|
From: Christian Prochaska <christian.prochaska@genode-labs.com>
|
|
|
|
|
|
---
|
|
src/network/socket/qnativesocketengine_unix.cpp | 16 ++++++++++++++++
|
|
1 file changed, 16 insertions(+)
|
|
|
|
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
|
|
index b4e5126..9093abd 100644
|
|
--- a/src/network/socket/qnativesocketengine_unix.cpp
|
|
+++ b/src/network/socket/qnativesocketengine_unix.cpp
|
|
@@ -430,6 +430,22 @@ bool QNativeSocketEnginePrivate::nativeConnect(const QHostAddress &addr, quint16
|
|
case EISCONN:
|
|
socketState = QAbstractSocket::ConnectedState;
|
|
break;
|
|
+#ifdef Q_OS_GENODE
|
|
+ /* to have Arora get an error indication, socketState needs to change
|
|
+ * to "ConnectingState" before changing to "UnconnectedState" again
|
|
+ */
|
|
+ case ECONNABORTED:
|
|
+ if (socketState == QAbstractSocket::UnconnectedState) {
|
|
+ /* interpret ECONNABORTED as EINPROGRESS */
|
|
+ setError(QAbstractSocket::UnfinishedSocketOperationError, InvalidSocketErrorString);
|
|
+ socketState = QAbstractSocket::ConnectingState;
|
|
+ } else {
|
|
+ /* interpret ECONNABORTED as EHOSTUNREACH */
|
|
+ setError(QAbstractSocket::NetworkError, HostUnreachableErrorString);
|
|
+ socketState = QAbstractSocket::UnconnectedState;
|
|
+ }
|
|
+ break;
|
|
+#endif
|
|
case ECONNREFUSED:
|
|
case EINVAL:
|
|
setError(QAbstractSocket::ConnectionRefusedError, ConnectionRefusedErrorString);
|