Use posix_win.c functions on WIN32
- read() returns bytes count as 1 for crlf unless binary mode isn't specified with open(). Reported by @ulfworsoe in libressl-portable#542 - err could be WSANOTINITIALISED when WSAStartup() is not called
This commit is contained in:
@@ -162,7 +162,8 @@ posix_close(int fd)
|
||||
{
|
||||
if (closesocket(fd) == SOCKET_ERROR) {
|
||||
int err = WSAGetLastError();
|
||||
return (err == WSAENOTSOCK || err == WSAEBADF) ?
|
||||
return (err == WSAENOTSOCK || err == WSAEBADF ||
|
||||
err == WSANOTINITIALISED) ?
|
||||
close(fd) : wsa_errno(err);
|
||||
}
|
||||
return 0;
|
||||
@@ -174,7 +175,8 @@ posix_read(int fd, void *buf, size_t count)
|
||||
ssize_t rc = recv(fd, buf, count, 0);
|
||||
if (rc == SOCKET_ERROR) {
|
||||
int err = WSAGetLastError();
|
||||
return (err == WSAENOTSOCK || err == WSAEBADF) ?
|
||||
return (err == WSAENOTSOCK || err == WSAEBADF ||
|
||||
err == WSANOTINITIALISED) ?
|
||||
read(fd, buf, count) : wsa_errno(err);
|
||||
}
|
||||
return rc;
|
||||
@@ -186,7 +188,8 @@ posix_write(int fd, const void *buf, size_t count)
|
||||
ssize_t rc = send(fd, buf, count, 0);
|
||||
if (rc == SOCKET_ERROR) {
|
||||
int err = WSAGetLastError();
|
||||
return (err == WSAENOTSOCK || err == WSAEBADF) ?
|
||||
return (err == WSAENOTSOCK || err == WSAEBADF ||
|
||||
err == WSANOTINITIALISED) ?
|
||||
write(fd, buf, count) : wsa_errno(err);
|
||||
}
|
||||
return rc;
|
||||
|
Reference in New Issue
Block a user