From 2ee2dc11c40f5bb00907cc70a9603d4a35c6f297 Mon Sep 17 00:00:00 2001 From: Peter van Dijk Date: Wed, 31 Jul 2019 16:57:03 +0200 Subject: [PATCH] remotebackend pipeconnector: stop using select() (cherry picked from commit 24cc241457124f986e6ab35f2530c8b633408c9c) --- modules/remotebackend/pipeconnector.cc | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/modules/remotebackend/pipeconnector.cc b/modules/remotebackend/pipeconnector.cc index a919c553d..d30ed06e6 100644 --- a/modules/remotebackend/pipeconnector.cc +++ b/modules/remotebackend/pipeconnector.cc @@ -87,7 +87,7 @@ void PipeConnector::launch() { if(!(d_fp=std::unique_ptr(fdopen(d_fd2[0],"r"), fclose))) throw PDNSException("Unable to associate a file pointer with pipe: "+stringerror()); if (d_timeout) - setbuf(d_fp.get(),0); // no buffering please, confuses select + setbuf(d_fp.get(),0); // no buffering please, confuses poll } else if(!d_pid) { // child signal(SIGCHLD, SIG_DFL); // silence a warning from perl @@ -157,13 +157,7 @@ int PipeConnector::recv_message(Json& output) while(1) { receive.clear(); if(d_timeout) { - struct timeval tv; - tv.tv_sec = d_timeout/1000; - tv.tv_usec = (d_timeout % 1000) * 1000; - fd_set rds; - FD_ZERO(&rds); - FD_SET(fileno(d_fp.get()),&rds); - int ret=select(fileno(d_fp.get())+1,&rds,0,0,&tv); + int ret=waitForData(fileno(d_fp.get()), 0, d_timeout * 1000); if(ret<0) throw PDNSException("Error waiting on data from coprocess: "+stringerror()); if(!ret) -- 2.40.0