summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ne_socket.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/ne_socket.c b/src/ne_socket.c
index d449fb2..0492431 100644
--- a/src/ne_socket.c
+++ b/src/ne_socket.c
@@ -2070,9 +2070,12 @@ int ne_sock_shutdown(ne_socket *sock, unsigned int flags)
}
#endif
- ret = shutdown(sock->fd,
- flags == NE_SOCK_RECV ? SHUT_RD :
- (flags == NE_SOCK_SEND ? SHUT_WR : SHUT_RDWR));
+#ifdef _WIN32
+ int how = flags == NE_SOCK_RECV ? SD_RECEIVE : (flags == NE_SOCK_SEND ? SD_SEND : SD_BOTH);
+#else
+ int how = flags == NE_SOCK_RECV ? SHUT_RD : (flags == NE_SOCK_SEND ? SHUT_WR : SHUT_RDWR);
+#endif
+ ret = shutdown(sock->fd, how);
if (ret < 0) {
int errnum = ne_errno;
set_strerror(sock, errnum);