summaryrefslogtreecommitdiffstats
path: root/lib/libc/rpc/svc_tcp.c
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2013-03-11 17:40:09 +0000
committerderaadt <deraadt@openbsd.org>2013-03-11 17:40:09 +0000
commit62e3c2528255beec34fe0acd77e74b042a0926c6 (patch)
tree1c7e4070f2f682e9d9017be26794ca4197437d0e /lib/libc/rpc/svc_tcp.c
parentWhen binding a lease, check for and clear out any 'zombie' routes (diff)
downloadwireguard-openbsd-62e3c2528255beec34fe0acd77e74b042a0926c6.tar.xz
wireguard-openbsd-62e3c2528255beec34fe0acd77e74b042a0926c6.zip
handle ECONNABORTED errors from accept(). In many code blocks they can be
ignored silently and without aborting, much like EINTR and EWOULDBLOCK are. ok's from various maintainers of these directories...
Diffstat (limited to 'lib/libc/rpc/svc_tcp.c')
-rw-r--r--lib/libc/rpc/svc_tcp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/libc/rpc/svc_tcp.c b/lib/libc/rpc/svc_tcp.c
index 85902ecb84e..a1a6ef44b58 100644
--- a/lib/libc/rpc/svc_tcp.c
+++ b/lib/libc/rpc/svc_tcp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: svc_tcp.c,v 1.30 2010/09/01 14:43:34 millert Exp $ */
+/* $OpenBSD: svc_tcp.c,v 1.31 2013/03/11 17:40:09 deraadt Exp $ */
/*
* Copyright (c) 2010, Oracle America, Inc.
@@ -251,7 +251,8 @@ rendezvous_request(SVCXPRT *xprt, struct rpc_msg *ignored)
len = sizeof(struct sockaddr_in);
if ((sock = accept(xprt->xp_sock, (struct sockaddr *)&addr,
&len)) < 0) {
- if (errno == EINTR)
+ if (errno == EINTR || errno == EWOULDBLOCK ||
+ errno == ECONNABORTED)
goto again;
return (FALSE);
}