Bladeren bron

ENet wrapper properly detect disconnect on poll

Now PacketPeerUDP.get_available_packet_count() return -1 if the socket
is in error state.
Fabio Alessandrelli 7 jaren geleden
bovenliggende
commit
7de28be764

+ 1 - 1
drivers/unix/packet_peer_udp_posix.cpp

@@ -61,7 +61,7 @@ int PacketPeerUDPPosix::get_available_packet_count() const {
 
 	Error err = const_cast<PacketPeerUDPPosix *>(this)->_poll(false);
 	if (err != OK)
-		return 0;
+		return -1;
 
 	return queue_count;
 }

+ 1 - 1
drivers/windows/packet_peer_udp_winsock.cpp

@@ -42,7 +42,7 @@ int PacketPeerUDPWinsock::get_available_packet_count() const {
 
 	Error err = const_cast<PacketPeerUDPWinsock *>(this)->_poll(false);
 	if (err != OK)
-		return 0;
+		return -1;
 
 	return queue_count;
 }

+ 3 - 2
thirdparty/enet/godot.cpp

@@ -168,8 +168,9 @@ int enet_socket_receive(ENetSocket socket, ENetAddress *address, ENetBuffer *buf
 
 	PacketPeerUDP *sock = (PacketPeerUDP *)socket;
 
-	if (sock->get_available_packet_count() == 0) {
-		return 0;
+	int pc = sock->get_available_packet_count();
+	if (pc < 1) {
+		return pc;
 	}
 
 	const uint8_t *buffer;