diff options
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/asr/res_send_async.c | 14 | ||||
-rw-r--r-- | lib/libc/rpc/clnt_udp.c | 25 |
2 files changed, 6 insertions, 33 deletions
diff --git a/lib/libc/asr/res_send_async.c b/lib/libc/asr/res_send_async.c index 3404b79c802..52dd5ed84e1 100644 --- a/lib/libc/asr/res_send_async.c +++ b/lib/libc/asr/res_send_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: res_send_async.c,v 1.23 2015/06/20 01:16:25 jca Exp $ */ +/* $OpenBSD: res_send_async.c,v 1.24 2015/09/09 15:40:04 guenther Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -301,17 +301,9 @@ res_send_async_run(struct asr_query *as, struct asr_result *ar) static int sockaddr_connect(const struct sockaddr *sa, int socktype) { - int errno_save, flags, sock; + int errno_save, sock; - if ((sock = socket(sa->sa_family, socktype, 0)) == -1) - goto fail; - - if ((flags = fcntl(sock, F_GETFL, 0)) == -1) - goto fail; - - flags |= O_NONBLOCK; - - if ((flags = fcntl(sock, F_SETFL, flags)) == -1) + if ((sock = socket(sa->sa_family, socktype | SOCK_NONBLOCK, 0)) == -1) goto fail; if (connect(sock, sa, sa->sa_len) == -1) { diff --git a/lib/libc/rpc/clnt_udp.c b/lib/libc/rpc/clnt_udp.c index 7a30c38fc63..472e1faabc7 100644 --- a/lib/libc/rpc/clnt_udp.c +++ b/lib/libc/rpc/clnt_udp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: clnt_udp.c,v 1.29 2015/09/01 19:54:01 deraadt Exp $ */ +/* $OpenBSD: clnt_udp.c,v 1.30 2015/09/09 15:40:04 guenther Exp $ */ /* * Copyright (c) 2010, Oracle America, Inc. @@ -158,9 +158,8 @@ clntudp_bufcreate(struct sockaddr_in *raddr, u_long program, u_long version, } cu->cu_xdrpos = XDR_GETPOS(&(cu->cu_outxdrs)); if (*sockp < 0) { - int fl; - - *sockp = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + *sockp = socket(AF_INET, SOCK_DGRAM | SOCK_NONBLOCK, + IPPROTO_UDP); if (*sockp < 0) { rpc_createerr.cf_stat = RPC_SYSTEMERROR; rpc_createerr.cf_error.re_errno = errno; @@ -168,24 +167,6 @@ clntudp_bufcreate(struct sockaddr_in *raddr, u_long program, u_long version, } /* attempt to bind to priv port */ (void)bindresvport(*sockp, NULL); - /* the sockets rpc controls are non-blocking */ - - fl = fcntl(*sockp, F_GETFL); - if (fl == -1) { - close(*sockp); - rpc_createerr.cf_stat = RPC_SYSTEMERROR; - rpc_createerr.cf_error.re_errno = errno; - goto fooy; - } - if ((fl & O_NONBLOCK) == 0) { - fl |= O_NONBLOCK; - if (fcntl(*sockp, F_SETFL, fl) == -1) { - close(*sockp); - rpc_createerr.cf_stat = RPC_SYSTEMERROR; - rpc_createerr.cf_error.re_errno = errno; - goto fooy; - } - } cu->cu_closeit = TRUE; } else { cu->cu_closeit = FALSE; |