mirror of
https://github.com/solemnwarning/ipxwrapper
synced 2024-12-30 16:45:37 +01:00
Release mutex before calling r_recv() in recvfrom() due to deadlocking. Locking code needs rewriting at some point...
This commit is contained in:
parent
f0ea3fbea9
commit
8ebce5612d
@ -394,10 +394,12 @@ int WSAAPI recvfrom(SOCKET fd, char *buf, int len, int flags, struct sockaddr *a
|
|||||||
RETURN_WSA(ERROR_OUTOFMEMORY, -1);
|
RETURN_WSA(ERROR_OUTOFMEMORY, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unlock_mutex();
|
||||||
|
|
||||||
int rval = r_recv(fd, (char*)packet, PACKET_BUF_SIZE, flags);
|
int rval = r_recv(fd, (char*)packet, PACKET_BUF_SIZE, flags);
|
||||||
if(rval == -1) {
|
if(rval == -1) {
|
||||||
free(packet);
|
free(packet);
|
||||||
RETURN(-1);
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(from) {
|
if(from) {
|
||||||
@ -416,15 +418,16 @@ int WSAAPI recvfrom(SOCKET fd, char *buf, int len, int flags, struct sockaddr *a
|
|||||||
rval = packet->size;
|
rval = packet->size;
|
||||||
free(packet);
|
free(packet);
|
||||||
|
|
||||||
RETURN(rval);
|
return rval;
|
||||||
}else{
|
}else{
|
||||||
memcpy(buf, packet->data, len);
|
memcpy(buf, packet->data, len);
|
||||||
free(packet);
|
free(packet);
|
||||||
|
|
||||||
RETURN_WSA(WSAEMSGSIZE, -1);
|
WSASetLastError(WSAEMSGSIZE);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
RETURN(r_recvfrom(fd, buf, len, flags, addr, addrlen));
|
return r_recvfrom(fd, buf, len, flags, addr, addrlen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user