diff options
author | rofl0r <rofl0r@users.noreply.github.com> | 2020-09-21 12:46:38 +0300 |
---|---|---|
committer | rofl0r <rofl0r@users.noreply.github.com> | 2020-09-21 12:46:38 +0300 |
commit | e6c47646601a9a7b4551174bd60f0cd00829e8af (patch) | |
tree | 6a651df569a262ae688955600fd585065533afbc | |
parent | 2ab631918d8c75c6382a2dcf3a321fb956801f8a (diff) |
proxy_dns_old: use pipe2 if available, else O_CLOEXEC
make the old code a little less lame
-rw-r--r-- | src/core.c | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -756,7 +756,7 @@ struct hostent* proxy_gethostbyname_old(const char *name) char buff[256]; in_addr_t addr; pid_t pid; - int status; + int status, ret; size_t l; struct hostent* hp; @@ -775,8 +775,17 @@ struct hostent* proxy_gethostbyname_old(const char *name) while ((hp=gethostent())) if (!strcmp(hp->h_name,name)) return hp; +#ifdef HAVE_PIPE2 + ret = pipe2(pipe_fd, O_CLOEXEC); +#else + ret = pipe(pipe_fd); + if(ret == 0) { + fcntl(pipe_fd[0], F_SETFD, FD_CLOEXEC); + fcntl(pipe_fd[1], F_SETFD, FD_CLOEXEC); + } +#endif - if(pipe(pipe_fd)) + if(ret) goto err; pid = fork(); switch(pid) { |