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 | |
| 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
| -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; |
