浏览代码

Fixed PacketPeerUDP getting wrongly closed due to recvfrom using rb.data_left instead of rb.space_left.

Trond Abusdal 9 年之前
父节点
当前提交
f809cd44ea
共有 2 个文件被更改,包括 2 次插入2 次删除
  1. 1 1
      drivers/unix/packet_peer_udp_posix.cpp
  2. 1 1
      platform/windows/packet_peer_udp_winsock.cpp

+ 1 - 1
drivers/unix/packet_peer_udp_posix.cpp

@@ -121,7 +121,7 @@ Error PacketPeerUDPPosix::_poll(bool p_wait) {
 	struct sockaddr_in from = {0};
 	socklen_t len = sizeof(struct sockaddr_in);
 	int ret;
-	while ( (ret = recvfrom(sockfd, recv_buffer, MIN(sizeof(recv_buffer),rb.data_left()-12), p_wait?0:MSG_DONTWAIT, (struct sockaddr*)&from, &len)) > 0) {
+	while ( (ret = recvfrom(sockfd, recv_buffer, MIN(sizeof(recv_buffer),rb.space_left()-12), p_wait?0:MSG_DONTWAIT, (struct sockaddr*)&from, &len)) > 0) {
 		rb.write((uint8_t*)&from.sin_addr, 4);
 		uint32_t port = ntohs(from.sin_port);
 		rb.write((uint8_t*)&port, 4);

+ 1 - 1
platform/windows/packet_peer_udp_winsock.cpp

@@ -121,7 +121,7 @@ Error PacketPeerUDPWinsock::_poll(bool p_wait) {
 	struct sockaddr_in from = {0};
 	int len = sizeof(struct sockaddr_in);
 	int ret;
-	while ( (ret = recvfrom(sockfd, (char*)recv_buffer, MIN(sizeof(recv_buffer),rb.data_left()-12), 0, (struct sockaddr*)&from, &len)) > 0) {
+	while ( (ret = recvfrom(sockfd, (char*)recv_buffer, MIN(sizeof(recv_buffer),rb.space_left()-12), 0, (struct sockaddr*)&from, &len)) > 0) {
 		rb.write((uint8_t*)&from.sin_addr, 4);
 		uint32_t port = ntohs(from.sin_port);
 		rb.write((uint8_t*)&port, 4);