summaryrefslogtreecommitdiff
path: root/modules/websocket
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2022-10-17 12:52:09 +0200
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2022-10-17 12:52:09 +0200
commitadb3d2338e69fb6c90a2b52025d319dbd8f23036 (patch)
treea5c8fa2c22625409ce6751db1eecd15cac25435e /modules/websocket
parent0d28820c816fa66b66a98cc6c9df25ff74cbb19f (diff)
[WebSocket] Fix client failing to connect to direct IP.
The bug was caused by not checking the TCP CONNECTING state appropriately during the client handshake, and not checking the TCP CONNECTED state during connection (which is unlikely, but might still happen).
Diffstat (limited to 'modules/websocket')
-rw-r--r--modules/websocket/wsl_peer.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/modules/websocket/wsl_peer.cpp b/modules/websocket/wsl_peer.cpp
index 4930b178ec..84e022182e 100644
--- a/modules/websocket/wsl_peer.cpp
+++ b/modules/websocket/wsl_peer.cpp
@@ -320,7 +320,9 @@ void WSLPeer::_do_client_handshake() {
}
tcp->poll();
- if (tcp->get_status() != StreamPeerTCP::STATUS_CONNECTED) {
+ if (tcp->get_status() == StreamPeerTCP::STATUS_CONNECTING) {
+ return; // Keep connecting.
+ } else if (tcp->get_status() != StreamPeerTCP::STATUS_CONNECTED) {
close(-1); // Failed to connect.
return;
}
@@ -511,7 +513,7 @@ Error WSLPeer::connect_to_url(const String &p_url, bool p_verify_tls, Ref<X509Ce
resolver.start(host, port);
resolver.try_next_candidate(tcp);
- if (tcp->get_status() != StreamPeerTCP::STATUS_CONNECTING && !resolver.has_more_candidates()) {
+ if (tcp->get_status() != StreamPeerTCP::STATUS_CONNECTING && tcp->get_status() != StreamPeerTCP::STATUS_CONNECTED && !resolver.has_more_candidates()) {
_clear();
return FAILED;
}