whois: do not clobber command-line flags when tweaking O_NONBLOCK

This can make whois fail to follow referrals when it should.
The bug was introduced in r281959.
This commit is contained in:
fanf 2015-05-14 10:33:33 +00:00
parent 8fd803db87
commit 18c4720eef

View File

@ -311,7 +311,7 @@ whois(const char *query, const char *hostname, int flags)
FILE *fp;
struct addrinfo *hostres, *res;
char *buf, *host, *nhost, *p;
int s = -1;
int s = -1, f;
nfds_t i, j;
size_t c, len, count;
struct pollfd *fds;
@ -431,9 +431,9 @@ whois(const char *query, const char *hostname, int flags)
if (s != -1) {
/* Restore default blocking behavior. */
if ((flags = fcntl(s, F_GETFL)) != -1) {
flags &= ~O_NONBLOCK;
if (fcntl(s, F_SETFL, flags) == -1)
if ((f = fcntl(s, F_GETFL)) != -1) {
f &= ~O_NONBLOCK;
if (fcntl(s, F_SETFL, f) == -1)
err(EX_OSERR, "fcntl()");
} else
err(EX_OSERR, "fcntl()");