summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-15 13:57:51 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-15 13:57:51 +0000
commit71d7a162d658e5041eca45abdc48dc75f92a0bda (patch)
treeee270b7283674e4e155c25789e6f721d6b8777b1 /src
parent3842161f9b5ae0c35b0b4fff7ebab661e685ef93 (diff)
2010-02-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Check both EAGAIN and EWOULDBLOCK * src/SocketCore.cc
Diffstat (limited to 'src')
-rw-r--r--src/SocketCore.cc12
1 files changed, 7 insertions, 5 deletions
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<ssize_t>(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 {