diff options
author | 2013-03-11 17:40:09 +0000 | |
---|---|---|
committer | 2013-03-11 17:40:09 +0000 | |
commit | 62e3c2528255beec34fe0acd77e74b042a0926c6 (patch) | |
tree | 1c7e4070f2f682e9d9017be26794ca4197437d0e /lib/libc/rpc/svc_tcp.c | |
parent | When binding a lease, check for and clear out any 'zombie' routes (diff) | |
download | wireguard-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.c | 5 |
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); } |