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
|
#else
|
||||||
r = write(base->th_notify_fd[1], buf, 1);
|
r = write(base->th_notify_fd[1], buf, 1);
|
||||||
#endif
|
#endif
|
||||||
return (r < 0 && errno != EAGAIN) ? -1 : 0;
|
return (r < 0 && ! EVUTIL_ERR_IS_EAGAIN(errno)) ? -1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef EVENT__HAVE_EVENTFD
|
#ifdef EVENT__HAVE_EVENTFD
|
||||||
|
@ -79,15 +79,23 @@ extern "C" {
|
|||||||
|
|
||||||
#ifndef _WIN32
|
#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. */
|
/* True iff e is an error that means a read/write operation can be retried. */
|
||||||
#define EVUTIL_ERR_RW_RETRIABLE(e) \
|
#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. */
|
/* True iff e is an error that means an connect can be retried. */
|
||||||
#define EVUTIL_ERR_CONNECT_RETRIABLE(e) \
|
#define EVUTIL_ERR_CONNECT_RETRIABLE(e) \
|
||||||
((e) == EINTR || (e) == EINPROGRESS)
|
((e) == EINTR || (e) == EINPROGRESS)
|
||||||
/* True iff e is an error that means a accept can be retried. */
|
/* True iff e is an error that means a accept can be retried. */
|
||||||
#define EVUTIL_ERR_ACCEPT_RETRIABLE(e) \
|
#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 */
|
/* True iff e is an error that means the connection was refused */
|
||||||
#define EVUTIL_ERR_CONNECT_REFUSED(e) \
|
#define EVUTIL_ERR_CONNECT_REFUSED(e) \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user