From 71d7a162d658e5041eca45abdc48dc75f92a0bda Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 15 Feb 2010 13:57:51 +0000 Subject: [PATCH] 2010-02-15 Tatsuhiro Tsujikawa Check both EAGAIN and EWOULDBLOCK * src/SocketCore.cc --- ChangeLog | 5 +++++ src/SocketCore.cc | 12 +++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index c1e3d229..e27332d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-02-15 Tatsuhiro Tsujikawa + + Check both EAGAIN and EWOULDBLOCK + * src/SocketCore.cc + 2010-02-15 Tatsuhiro Tsujikawa Removed ret == 0 checking for SSL_read(), SSL_write() and diff --git a/src/SocketCore.cc b/src/SocketCore.cc index 160a5f25..a43175d8 100644 --- a/src/SocketCore.cc +++ b/src/SocketCore.cc @@ -71,6 +71,7 @@ namespace aria2 { # define A2_EINPROGRESS WSAEWOULDBLOCK # define A2_EWOULDBLOCK WSAEWOULDBLOCK # define A2_EINTR WSAEINTR +# define A2_WOULDBLOCK(e) (e == WSAEWOULDBLOCK) #else // !__MINGW32__ # define A2_EINPROGRESS EINPROGRESS # ifndef EWOULDBLOCK @@ -78,6 +79,7 @@ namespace aria2 { # endif // EWOULDBLOCK # define A2_EWOULDBLOCK EWOULDBLOCK # define A2_EINTR EINTR +# define A2_WOULDBLOCK(e) (e == EWOULDBLOCK || e == EAGAIN) #endif // !__MINGW32__ #ifdef __MINGW32__ @@ -614,7 +616,7 @@ ssize_t SocketCore::writeData(const char* data, size_t len) if(!secure) { while((ret = send(sockfd, data, len, 0)) == -1 && SOCKET_ERRNO == A2_EINTR); if(ret == -1) { - if(SOCKET_ERRNO == A2_EWOULDBLOCK) { + if(A2_WOULDBLOCK(SOCKET_ERRNO)) { _wantWrite = true; ret = 0; } else { @@ -658,7 +660,7 @@ void SocketCore::readData(char* data, size_t& len) while((ret = recv(sockfd, data, len, 0)) == -1 && SOCKET_ERRNO == A2_EINTR); if(ret == -1) { - if(SOCKET_ERRNO == A2_EWOULDBLOCK) { + if(A2_WOULDBLOCK(SOCKET_ERRNO)) { _wantRead = true; ret = 0; } else { @@ -704,7 +706,7 @@ void SocketCore::peekData(char* data, size_t& len) while((ret = recv(sockfd, data, len, MSG_PEEK)) == -1 && SOCKET_ERRNO == A2_EINTR); if(ret == -1) { - if(SOCKET_ERRNO == A2_EWOULDBLOCK) { + if(A2_WOULDBLOCK(SOCKET_ERRNO)) { _wantRead = true; ret = 0; } else { @@ -1056,7 +1058,7 @@ ssize_t SocketCore::writeData(const char* data, size_t len, if(r == static_cast(len)) { break; } - if(r == -1 && SOCKET_ERRNO == A2_EWOULDBLOCK) { + if(r == -1 && A2_WOULDBLOCK(SOCKET_ERRNO)) { _wantWrite = true; r = 0; break; @@ -1081,7 +1083,7 @@ ssize_t SocketCore::readDataFrom(char* data, size_t len, while((r = recvfrom(sockfd, data, len, 0, addrp, &sockaddrlen)) == -1 && A2_EINTR == SOCKET_ERRNO); if(r == -1) { - if(SOCKET_ERRNO == A2_EWOULDBLOCK) { + if(A2_WOULDBLOCK(SOCKET_ERRNO)) { _wantRead = true; r = 0; } else {