mirror of
https://github.com/libevent/libevent.git
synced 2025-01-31 09:12:55 +08:00
When EWOULDBLOCK is not EAGAIN, treat it as equivalent to it
Acording to http://stackoverflow.com/questions/7003234/which-systems-define-eagain-and-ewouldblock-as-different-values there are some older unixes that distinguish these error.s
This commit is contained in:
parent
b452a43450
commit
bf7a0ff268
2
event.c
2
event.c
@ -2157,7 +2157,7 @@ evthread_notify_base_default(struct event_base *base)
|
||||
#else
|
||||
r = write(base->th_notify_fd[1], buf, 1);
|
||||
#endif
|
||||
return (r < 0 && errno != EAGAIN) ? -1 : 0;
|
||||
return (r < 0 && ! EVUTIL_ERR_IS_EAGAIN(errno)) ? -1 : 0;
|
||||
}
|
||||
|
||||
#ifdef EVENT__HAVE_EVENTFD
|
||||
|
@ -79,15 +79,23 @@ extern "C" {
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#if EAGAIN == EWOULDBLOCK
|
||||
#define EVUTIL_ERR_IS_EAGAIN(e) \
|
||||
((e) == EAGAIN)
|
||||
#else
|
||||
#define EVUTIL_ERR_IS_EAGAIN(e) \
|
||||
((e) == EAGAIN || (e) == EWOULDBLOCK)
|
||||
#endif
|
||||
|
||||
/* True iff e is an error that means a read/write operation can be retried. */
|
||||
#define EVUTIL_ERR_RW_RETRIABLE(e) \
|
||||
((e) == EINTR || (e) == EAGAIN)
|
||||
((e) == EINTR || EVUTIL_ERR_IS_EAGAIN(e))
|
||||
/* True iff e is an error that means an connect can be retried. */
|
||||
#define EVUTIL_ERR_CONNECT_RETRIABLE(e) \
|
||||
((e) == EINTR || (e) == EINPROGRESS)
|
||||
/* True iff e is an error that means a accept can be retried. */
|
||||
#define EVUTIL_ERR_ACCEPT_RETRIABLE(e) \
|
||||
((e) == EINTR || (e) == EAGAIN || (e) == ECONNABORTED)
|
||||
((e) == EINTR || EVUTIL_ERR_IS_EAGAIN(e) || (e) == ECONNABORTED)
|
||||
|
||||
/* True iff e is an error that means the connection was refused */
|
||||
#define EVUTIL_ERR_CONNECT_REFUSED(e) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user