diff options
author | Martin Willi <martin@revosec.ch> | 2014-11-06 14:15:09 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2014-11-21 12:02:08 +0100 |
commit | 09624c6cec97dc729f3f3c0984d6289b115b846b (patch) | |
tree | 6e6a7e48dd586e3fc26d93784f89a5d743e3a7cf /src/libstrongswan/utils/windows.c | |
parent | f518b52c2dda0b7c0f6f51acf81daab7a65a5d00 (diff) | |
download | strongswan-09624c6cec97dc729f3f3c0984d6289b115b846b.tar.bz2 strongswan-09624c6cec97dc729f3f3c0984d6289b115b846b.tar.xz |
windows: Provide a read(2) wrapper that uses recv(2) on sockets
Diffstat (limited to 'src/libstrongswan/utils/windows.c')
-rw-r--r-- | src/libstrongswan/utils/windows.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/libstrongswan/utils/windows.c b/src/libstrongswan/utils/windows.c index 6ce9d77c8..e511db026 100644 --- a/src/libstrongswan/utils/windows.c +++ b/src/libstrongswan/utils/windows.c @@ -646,6 +646,22 @@ ssize_t windows_sendto(int sockfd, const void *buf, size_t len, int flags, /** * See header */ +#undef read +ssize_t windows_read(int fd, void *buf, size_t count) +{ + ssize_t ret; + + ret = recv(fd, buf, count, 0); + if (ret == -1 && WSAGetLastError() == WSAENOTSOCK) + { + ret = read(fd, buf, count); + } + return ret; +} + +/** + * See header + */ int poll(struct pollfd *fds, int nfds, int timeout) { return wserr(WSAPoll(fds, nfds, timeout)); |