genode/qt4/src/lib/qt4/patches/qt4_lwip_connect_semantics_...

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