aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2018-10-11 18:52:12 +0200
committerKim Alvefur <zash@zash.se>2018-10-11 18:52:12 +0200
commit9547e0e66d31ed8b3e3dcec7fb3c6ea96bda7ccc (patch)
treed2cc461481dd787e9d9726e7d6b70cb299d1c0c2
parent22e0c16d4c94f11cb3bc3a9bd1d57c142627efaf (diff)
downloadprosody-9547e0e66d31ed8b3e3dcec7fb3c6ea96bda7ccc.tar.gz
prosody-9547e0e66d31ed8b3e3dcec7fb3c6ea96bda7ccc.zip
util.poll: Handle failed epoll FD creation
-rw-r--r--util-src/poll.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/util-src/poll.c b/util-src/poll.c
index 293c8c2b..d2d9dc03 100644
--- a/util-src/poll.c
+++ b/util-src/poll.c
@@ -386,8 +386,19 @@ int Lnew(lua_State *L) {
/* Initialize state */
#ifdef USE_EPOLL
- state->epoll_fd = epoll_create1(0);
+ state->epoll_fd = -1;
state->processed = 0;
+
+ int epoll_fd = epoll_create1(EPOLL_CLOEXEC);
+
+ if(epoll_fd <= 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, strerror(errno));
+ lua_pushinteger(L, errno);
+ return 3;
+ }
+
+ state->epoll_fd = epoll_fd;
#else
FD_ZERO(&state->wantread);
FD_ZERO(&state->wantwrite);