summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorn Potter <[email protected]>2024-12-16 14:38:44 +1000
committerLorn Potter <[email protected]>2025-03-18 02:30:10 +0000
commit1a8c8ffb0c45644c05ea1474df48bfdeea563524 (patch)
treed9ef0f73d11bda729e790159e3d0ce94aa3b0654
parent1a580ca2a9094e0de295eaca75dd00f0cc257126 (diff)
wasm: fix QTcpSocket error code when url doesn't exist
::connect on wasm seems to be returning 0 in the instance that the server url does not exist. So we ignore that and look at errno, which returns ENOENT which makes no sense here. Fixes: QTBUG-132191 Pick-to: 6.9 Change-Id: I2ff6642dd836324e1af6c288c53880de028ce158 Reviewed-by: Morten Johan Sørvig <[email protected]>
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp1
-rw-r--r--src/network/socket/qnet_unix_p.h5
2 files changed, 6 insertions, 0 deletions
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index b6df4122530..4b096c840d7 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -401,6 +401,7 @@ bool QNativeSocketEnginePrivate::nativeConnect(const QHostAddress &addr, quint16
break;
case ECONNREFUSED:
case EINVAL:
+ case ENOENT:
setError(QAbstractSocket::ConnectionRefusedError, ConnectionRefusedErrorString);
socketState = QAbstractSocket::UnconnectedState;
break;
diff --git a/src/network/socket/qnet_unix_p.h b/src/network/socket/qnet_unix_p.h
index a172a14a109..7e85bc537b5 100644
--- a/src/network/socket/qnet_unix_p.h
+++ b/src/network/socket/qnet_unix_p.h
@@ -109,6 +109,11 @@ static inline int qt_safe_connect(int sockfd, const struct sockaddr *addr, QT_SO
int ret;
// Solaris e.g. expects a non-const 2nd parameter
QT_EINTR_LOOP(ret, QT_SOCKET_CONNECT(sockfd, const_cast<struct sockaddr *>(addr), addrlen));
+#ifdef Q_OS_WASM
+// ::connect on wasm returns 0 when it shouldn't so use errno instead
+ if (errno != 0)
+ ret = -1;
+#endif
return ret;
}
#undef QT_SOCKET_CONNECT