1
0
mirror of https://github.com/libssh2/libssh2.git synced 2025-11-21 14:00:51 +03:00

misc.c : Add an EWOULDBLOCK check for better portability (#172)

File: misc.c

Notes: Added support for all OS' that implement EWOULDBLOCK, not only VMS

Credit: hlefebvre
This commit is contained in:
hlefebvre
2019-07-31 00:50:25 +02:00
committed by Will Cosgrove
parent 4820556950
commit 92f76866a8

View File

@@ -141,19 +141,16 @@ _libssh2_recv(libssh2_socket_t sock, void *buffer, size_t length,
#ifdef WIN32 #ifdef WIN32
if(rc < 0) if(rc < 0)
return -wsa2errno(); return -wsa2errno();
#elif defined(__VMS)
if(rc < 0) {
if(errno == EWOULDBLOCK)
return -EAGAIN;
else
return -errno;
}
#else #else
if(rc < 0) { if(rc < 0) {
/* Sometimes the first recv() function call sets errno to ENOENT on /* Sometimes the first recv() function call sets errno to ENOENT on
Solaris and HP-UX */ Solaris and HP-UX */
if(errno == ENOENT) if(errno == ENOENT)
return -EAGAIN; return -EAGAIN;
#ifdef EWOULDBLOCK /* For VMS and other special unixes */
else if(errno == EWOULDBLOCK)
return -EAGAIN;
#endif
else else
return -errno; return -errno;
} }
@@ -177,16 +174,14 @@ _libssh2_send(libssh2_socket_t sock, const void *buffer, size_t length,
#ifdef WIN32 #ifdef WIN32
if(rc < 0) if(rc < 0)
return -wsa2errno(); return -wsa2errno();
#elif defined(__VMS) #else
if(rc < 0) { if(rc < 0) {
#ifdef EWOULDBLOCK /* For VMS and other special unixes */
if(errno == EWOULDBLOCK) if(errno == EWOULDBLOCK)
return -EAGAIN; return -EAGAIN;
else #endif
return -errno; return -errno;
} }
#else
if(rc < 0)
return -errno;
#endif #endif
return rc; return rc;
} }