diff options
| -rw-r--r-- | core/io/stream_peer_tcp.cpp | 2 | ||||
| -rw-r--r-- | modules/websocket/wsl_client.cpp | 12 | ||||
| -rw-r--r-- | modules/websocket/wsl_client.h | 3 | 
3 files changed, 8 insertions, 9 deletions
diff --git a/core/io/stream_peer_tcp.cpp b/core/io/stream_peer_tcp.cpp index c5c2021e6e..ba79590c19 100644 --- a/core/io/stream_peer_tcp.cpp +++ b/core/io/stream_peer_tcp.cpp @@ -81,7 +81,7 @@ void StreamPeerTCP::accept_socket(Ref<NetSocket> p_sock, IPAddress p_host, uint1  	_sock->set_blocking_enabled(false);  	timeout = OS::get_singleton()->get_ticks_msec() + (((uint64_t)GLOBAL_GET("network/limits/tcp/connect_timeout_seconds")) * 1000); -	status = STATUS_CONNECTING; +	status = STATUS_CONNECTED;  	peer_host = p_host;  	peer_port = p_port; diff --git a/modules/websocket/wsl_client.cpp b/modules/websocket/wsl_client.cpp index 6f0b726f5c..894ba7766f 100644 --- a/modules/websocket/wsl_client.cpp +++ b/modules/websocket/wsl_client.cpp @@ -91,6 +91,7 @@ void WSLClient::_do_handshake() {  				data->id = 1;  				_peer->make_context(data, _in_buf_size, _in_pkt_size, _out_buf_size, _out_pkt_size);  				_peer->set_no_delay(true); +				_status = CONNECTION_CONNECTED;  				_on_connect(protocol);  				break;  			} @@ -231,6 +232,7 @@ Error WSLClient::connect_to_host(String p_host, String p_path, uint16_t p_port,  	}  	request += "\r\n";  	_request = request.utf8(); +	_status = CONNECTION_CONNECTING;  	return OK;  } @@ -337,21 +339,19 @@ Ref<WebSocketPeer> WSLClient::get_peer(int p_peer_id) const {  }  MultiplayerPeer::ConnectionStatus WSLClient::get_connection_status() const { +	// This is surprising, but keeps the current behaviour to allow clean close requests. +	// TODO Refactor WebSocket and split Client/Server/Multiplayer like done in other peers.  	if (_peer->is_connected_to_host()) {  		return CONNECTION_CONNECTED;  	} - -	if (_tcp->get_status() == StreamPeerTCP::STATUS_CONNECTING || _resolver_id != IP::RESOLVER_INVALID_ID) { -		return CONNECTION_CONNECTING; -	} - -	return CONNECTION_DISCONNECTED; +	return _status;  }  void WSLClient::disconnect_from_host(int p_code, String p_reason) {  	_peer->close(p_code, p_reason);  	_connection = Ref<StreamPeer>(nullptr);  	_tcp = Ref<StreamPeerTCP>(memnew(StreamPeerTCP)); +	_status = CONNECTION_DISCONNECTED;  	_key = "";  	_host = ""; diff --git a/modules/websocket/wsl_client.h b/modules/websocket/wsl_client.h index 04af83f28c..22d7ffa839 100644 --- a/modules/websocket/wsl_client.h +++ b/modules/websocket/wsl_client.h @@ -52,6 +52,7 @@ private:  	Ref<WSLPeer> _peer;  	Ref<StreamPeerTCP> _tcp;  	Ref<StreamPeer> _connection; +	ConnectionStatus _status = CONNECTION_DISCONNECTED;  	CharString _request;  	int _requested = 0; @@ -59,8 +60,6 @@ private:  	uint8_t _resp_buf[WSL_MAX_HEADER_SIZE];  	int _resp_pos = 0; -	String _response; -  	String _key;  	String _host;  	uint16_t _port = 0;  |