Skip to content

Commit

Permalink
Events: close descriptors on errors in ngx_epoll_test_rdhup().
Browse files Browse the repository at this point in the history
  • Loading branch information
mdounin committed May 18, 2016
1 parent e7c9143 commit ce9ff81
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions src/event/modules/ngx_epoll_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -477,25 +477,26 @@ ngx_epoll_test_rdhup(ngx_cycle_t *cycle)
if (epoll_ctl(ep, EPOLL_CTL_ADD, s[0], &ee) == -1) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"epoll_ctl() failed");
return;
goto failed;
}

if (close(s[1]) == -1) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"close() failed");
return;
s[1] = -1;
goto failed;
}

s[1] = -1;

events = epoll_wait(ep, &ee, 1, 5000);

if (events == -1) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"epoll_wait() failed");
return;
goto failed;
}

(void) close(s[0]);

if (events) {
ngx_use_epoll_rdhup = ee.events & EPOLLRDHUP;

Expand All @@ -507,6 +508,18 @@ ngx_epoll_test_rdhup(ngx_cycle_t *cycle)
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"testing the EPOLLRDHUP flag: %s",
ngx_use_epoll_rdhup ? "success" : "fail");

failed:

if (s[1] != -1 && close(s[1]) == -1) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"close() failed");
}

if (close(s[0]) == -1) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"close() failed");
}
}

#endif
Expand Down

0 comments on commit ce9ff81

Please sign in to comment.