瀏覽代碼

Avoid calling close when polling a UDP peer without socket

(cherry picked from commit e4b9b37ccf8495be674bc15cf0bf9d76fe94e6be)
Fabio Alessandrelli 8 年之前
父節點
當前提交
aeffe74a27
共有 2 個文件被更改,包括 8 次插入0 次删除
  1. 4 0
      drivers/unix/packet_peer_udp_posix.cpp
  2. 4 0
      platform/windows/packet_peer_udp_winsock.cpp

+ 4 - 0
drivers/unix/packet_peer_udp_posix.cpp

@@ -154,6 +154,10 @@ Error PacketPeerUDPPosix::wait() {
 
 Error PacketPeerUDPPosix::_poll(bool p_wait) {
 
+	if (sockfd == -1) {
+		return FAILED;
+	}
+
 	struct sockaddr_storage from = { 0 };
 	socklen_t len = sizeof(struct sockaddr_storage);
 	int ret;

+ 4 - 0
platform/windows/packet_peer_udp_winsock.cpp

@@ -149,6 +149,10 @@ Error PacketPeerUDPWinsock::wait() {
 }
 Error PacketPeerUDPWinsock::_poll(bool p_wait) {
 
+	if (sockfd == -1) {
+		return FAILED;
+	}
+
 	_set_blocking(p_wait);
 
 	struct sockaddr_storage from = { 0 };