From: Roy Marples Date: Wed, 17 Mar 2021 14:23:55 +0000 (+0000) Subject: privsep: Don't close control proxy on hangup X-Git-Tag: v10.0.0~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ade245567f32c49bde2a6fef1980e96f989fd87;p=thirdparty%2Fdhcpcd.git privsep: Don't close control proxy on hangup Instead wait for it to be closed by the master process for a clean shtudown. --- diff --git a/src/privsep-control.c b/src/privsep-control.c index 694242da..f216609b 100644 --- a/src/privsep-control.c +++ b/src/privsep-control.c @@ -178,12 +178,12 @@ ps_ctl_recv(void *arg, unsigned short events) char buf[BUFSIZ]; ssize_t len; - if (events != ELE_READ) + if (!(events & ELE_READ)) logerrx("%s: unexpected event 0x%04x", __func__, events); errno = 0; len = read(ctx->ps_control_data_fd, buf, sizeof(buf)); - if (len == -1 || len == 0) { + if (len == -1) { logerr("%s: read", __func__); eloop_exit(ctx->eloop, EXIT_FAILURE); return; @@ -203,12 +203,13 @@ ps_ctl_listen(void *arg, unsigned short events) ssize_t len; struct fd_list *fd; - if (events != ELE_READ) + if (!(events & ELE_READ)) logerrx("%s: unexpected event 0x%04x", __func__, events); - errno = 0; len = read(ctx->ps_control->fd, buf, sizeof(buf)); - if (len == -1 || len == 0) { + if (len == 0) + return; + if (len == -1) { logerr("%s: read", __func__); eloop_exit(ctx->eloop, EXIT_FAILURE); return;