Merge from OpenBSD:

revision 1.12
  date: 2015/12/05 13:06:52;  author: claudio;  state: Exp;  lines: +4 -6
  Do not loop on EAGAIN in imsg_read(). Better to return the error to the
  caller and let him do another poll loop. This fixes spinning relayd
  processes seen on busy TLS relays. OK benno@ henning@
This commit is contained in:
Craig Rodrigues 2015-12-09 19:21:00 +00:00
parent 5b74e28e80
commit fbb0e1b56a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=292022

View file

@ -1,4 +1,4 @@
/* $OpenBSD: imsg.c,v 1.11 2015/11/27 01:57:59 mmcc Exp $ */
/* $OpenBSD: imsg.c,v 1.12 2015/12/05 13:06:52 claudio Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -82,11 +82,9 @@ imsg_read(struct imsgbuf *ibuf)
}
if ((n = recvmsg(ibuf->fd, &msg, 0)) == -1) {
if (errno == EMSGSIZE)
goto fail;
if (errno != EINTR && errno != EAGAIN)
goto fail;
goto again;
if (errno == EINTR)
goto again;
goto fail;
}
ibuf->r.wpos += n;