From 7cd587aff1620f13399ccb6d40352a765a742927 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Mon, 16 Dec 2024 14:38:44 +1000 Subject: [PATCH] wasm: fix QTcpSocket error code when url doesn't exist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ::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 Change-Id: I2ff6642dd836324e1af6c288c53880de028ce158 Reviewed-by: Morten Johan Sørvig (cherry picked from commit 1a8c8ffb0c45644c05ea1474df48bfdeea563524) Reviewed-by: Qt Cherry-pick Bot Reviewed-by: Lorn Potter --- src/network/socket/qnativesocketengine_unix.cpp | 1 + src/network/socket/qnet_unix_p.h | 5 +++++ 2 files changed, 6 insertions(+) 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(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