diff options
author | Brent Cook <busterb@gmail.com> | 2017-01-15 10:02:37 -0600 |
---|---|---|
committer | Brent Cook <busterb@gmail.com> | 2017-01-15 16:00:16 -0600 |
commit | 69e2a7fb75ad5c833574c44e8364fb7e88e3788a (patch) | |
tree | 013720b2f33134a43af2f7d369d107277a333169 /crypto | |
parent | dbd5fb28ec73a2d47ad0dd4530728f835dcf65aa (diff) | |
download | portable-69e2a7fb75ad5c833574c44e8364fb7e88e3788a.tar.gz portable-69e2a7fb75ad5c833574c44e8364fb7e88e3788a.tar.bz2 portable-69e2a7fb75ad5c833574c44e8364fb7e88e3788a.zip |
handle EBADF, which is returned when a file is passed
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/compat/posix_win.c | 9 |
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; |