1
0
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:
Daniel Collins 2011-05-08 21:32:54 +00:00
parent f0ea3fbea9
commit 8ebce5612d

View File

@ -394,10 +394,12 @@ int WSAAPI recvfrom(SOCKET fd, char *buf, int len, int flags, struct sockaddr *a
RETURN_WSA(ERROR_OUTOFMEMORY, -1);
}
unlock_mutex();
int rval = r_recv(fd, (char*)packet, PACKET_BUF_SIZE, flags);
if(rval == -1) {
free(packet);
RETURN(-1);
return -1;
}
if(from) {
@ -416,15 +418,16 @@ int WSAAPI recvfrom(SOCKET fd, char *buf, int len, int flags, struct sockaddr *a
rval = packet->size;
free(packet);
RETURN(rval);
return rval;
}else{
memcpy(buf, packet->data, len);
free(packet);
RETURN_WSA(WSAEMSGSIZE, -1);
WSASetLastError(WSAEMSGSIZE);
return -1;
}
}else{
RETURN(r_recvfrom(fd, buf, len, flags, addr, addrlen));
return r_recvfrom(fd, buf, len, flags, addr, addrlen);
}
}