Merge pull request #2121 from bk2204/ewouldblock

Check for EWOULDBLOCK as well as EAGAIN on write.
This commit is contained in:
Vicent Marti 2014-02-18 18:48:43 +01:00
commit e0ebaaa53e
2 changed files with 10 additions and 1 deletions

View File

@ -189,7 +189,7 @@ int p_write(git_file fd, const void *buf, size_t cnt)
r = write(fd, b, cnt);
#endif
if (r < 0) {
if (errno == EINTR || errno == EAGAIN)
if (errno == EINTR || GIT_ISBLOCKED(errno))
continue;
return -1;
}

View File

@ -29,6 +29,15 @@
#define O_CLOEXEC 0
#endif
/* Determine whether an errno value indicates that a read or write failed
* because the descriptor is blocked.
*/
#if defined(EWOULDBLOCK)
#define GIT_ISBLOCKED(e) ((e) == EAGAIN || (e) == EWOULDBLOCK)
#else
#define GIT_ISBLOCKED(e) ((e) == EAGAIN)
#endif
typedef int git_file;
/**