- while (--n >= 0) {
- server_t *d = evts[n].data.ptr;
-
- if (d->listener) {
- (void)start_client(d, starter, deleter);
- continue;
- } else if (d->event) {
- if (!event_cancel(d->fd)) {
- server_release(d);
- continue;
- }
- if (handler) {
- if (!handler(d->data, config)) {
- server_release(d);
- }
- }
- continue;
- }
-
- if (evts[n].events & EPOLLIN) {
- if (runner(d, config) < 0) {
- server_release(d);
- continue;
- }
- }
-
- if ((evts[n].events & EPOLLOUT) && d->obuf.len) {
- if (buffer_write(&d->obuf, d->fd) < 0) {
- server_release(d);
- continue;
- }
- if (!d->obuf.len) {
- epoll_modify(d->fd, EPOLLIN, d);
- }
- }
- }
+ if (refresh != NULL) {
+ ev_signal_init(&ev_sighup, refresh_cb, SIGHUP);
+ ev_signal_start(global_loop, &ev_sighup);