aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrent Cook <busterb@gmail.com>2017-01-15 10:02:37 -0600
committerBrent Cook <busterb@gmail.com>2017-01-15 16:00:16 -0600
commit69e2a7fb75ad5c833574c44e8364fb7e88e3788a (patch)
tree013720b2f33134a43af2f7d369d107277a333169
parentdbd5fb28ec73a2d47ad0dd4530728f835dcf65aa (diff)
downloadportable-69e2a7fb75ad5c833574c44e8364fb7e88e3788a.tar.gz
portable-69e2a7fb75ad5c833574c44e8364fb7e88e3788a.tar.bz2
portable-69e2a7fb75ad5c833574c44e8364fb7e88e3788a.zip
handle EBADF, which is returned when a file is passed
-rw-r--r--crypto/compat/posix_win.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/crypto/compat/posix_win.c b/crypto/compat/posix_win.c
index 110323a..05a20bb 100644
--- a/crypto/compat/posix_win.c
+++ b/crypto/compat/posix_win.c
@@ -109,6 +109,9 @@ wsa_errno(int err)
109 case WSAEAFNOSUPPORT: 109 case WSAEAFNOSUPPORT:
110 errno = EAFNOSUPPORT; 110 errno = EAFNOSUPPORT;
111 break; 111 break;
112 case WSAEBADF:
113 errno = EBADF;
114 break;
112 case WSAENETRESET: 115 case WSAENETRESET:
113 case WSAENOTCONN: 116 case WSAENOTCONN:
114 case WSAECONNABORTED: 117 case WSAECONNABORTED:
@@ -135,7 +138,7 @@ posix_close(int fd)
135{ 138{
136 if (closesocket(fd) == SOCKET_ERROR) { 139 if (closesocket(fd) == SOCKET_ERROR) {
137 int err = WSAGetLastError(); 140 int err = WSAGetLastError();
138 return err == WSAENOTSOCK ? 141 return (err == WSAENOTSOCK || err == WSAEBADF) ?
139 close(fd) : wsa_errno(err); 142 close(fd) : wsa_errno(err);
140 } 143 }
141 return 0; 144 return 0;
@@ -147,7 +150,7 @@ posix_read(int fd, void *buf, size_t count)
147 ssize_t rc = recv(fd, buf, count, 0); 150 ssize_t rc = recv(fd, buf, count, 0);
148 if (rc == SOCKET_ERROR) { 151 if (rc == SOCKET_ERROR) {
149 int err = WSAGetLastError(); 152 int err = WSAGetLastError();
150 return err == WSAENOTSOCK ? 153 return (err == WSAENOTSOCK || err == WSAEBADF) ?
151 read(fd, buf, count) : wsa_errno(err); 154 read(fd, buf, count) : wsa_errno(err);
152 } 155 }
153 return rc; 156 return rc;
@@ -159,7 +162,7 @@ posix_write(int fd, const void *buf, size_t count)
159 ssize_t rc = send(fd, buf, count, 0); 162 ssize_t rc = send(fd, buf, count, 0);
160 if (rc == SOCKET_ERROR) { 163 if (rc == SOCKET_ERROR) {
161 int err = WSAGetLastError(); 164 int err = WSAGetLastError();
162 return err == WSAENOTSOCK ? 165 return (err == WSAENOTSOCK || err == WSAEBADF) ?
163 write(fd, buf, count) : wsa_errno(err); 166 write(fd, buf, count) : wsa_errno(err);
164 } 167 }
165 return rc; 168 return rc;