Fixed PacketPeerUDP getting wrongly closed due to recvfrom using rb.data_left instead of rb.space_left.
This commit is contained in:
parent
3fcfdfec0a
commit
f809cd44ea
@ -121,7 +121,7 @@ Error PacketPeerUDPPosix::_poll(bool p_wait) {
|
|||||||
struct sockaddr_in from = {0};
|
struct sockaddr_in from = {0};
|
||||||
socklen_t len = sizeof(struct sockaddr_in);
|
socklen_t len = sizeof(struct sockaddr_in);
|
||||||
int ret;
|
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);
|
rb.write((uint8_t*)&from.sin_addr, 4);
|
||||||
uint32_t port = ntohs(from.sin_port);
|
uint32_t port = ntohs(from.sin_port);
|
||||||
rb.write((uint8_t*)&port, 4);
|
rb.write((uint8_t*)&port, 4);
|
||||||
|
@ -121,7 +121,7 @@ Error PacketPeerUDPWinsock::_poll(bool p_wait) {
|
|||||||
struct sockaddr_in from = {0};
|
struct sockaddr_in from = {0};
|
||||||
int len = sizeof(struct sockaddr_in);
|
int len = sizeof(struct sockaddr_in);
|
||||||
int ret;
|
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);
|
rb.write((uint8_t*)&from.sin_addr, 4);
|
||||||
uint32_t port = ntohs(from.sin_port);
|
uint32_t port = ntohs(from.sin_port);
|
||||||
rb.write((uint8_t*)&port, 4);
|
rb.write((uint8_t*)&port, 4);
|
||||||
|
Loading…
Reference in New Issue
Block a user