diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2005-12-24 14:11:14 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2005-12-24 14:11:14 +0000 |
commit | ad24c480eadca34d15833f5c58e63f035ab98b99 (patch) | |
tree | 99ae8e8f6a02c269ee2fed7b2e1d0de6cf9eaac1 /usr.sbin | |
parent | 93c369d3e0a5ff06da3d7baceb1ff172668e1ff0 (diff) |
bzero the pfd array before setting it up and calling poll because on error
(e.g. EINTR) poll() will not update the pfd array (copyout) and so the old
revents are used and results in a blocking parent process. OK dlg@
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/bgpd/bgpd.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/usr.sbin/bgpd/bgpd.c b/usr.sbin/bgpd/bgpd.c index 5de219abe01..8f9de80e839 100644 --- a/usr.sbin/bgpd/bgpd.c +++ b/usr.sbin/bgpd/bgpd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: bgpd.c,v 1.126 2005/11/02 15:03:02 claudio Exp $ */ +/* $OpenBSD: bgpd.c,v 1.127 2005/12/24 14:11:13 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -252,6 +252,7 @@ main(int argc, char *argv[]) mrt_reconfigure(&mrt_l); while (quit == 0) { + bzero(pfd, sizeof(pfd)); pfd[PFD_PIPE_SESSION].fd = ibuf_se->fd; pfd[PFD_PIPE_SESSION].events = POLLIN; if (ibuf_se->w.queued) |