]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Rec: Set socket buf size for control socket.
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Thu, 3 Jan 2019 09:47:12 +0000 (10:47 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Thu, 3 Jan 2019 09:47:12 +0000 (10:47 +0100)
Fixes #5745 without changing settings for all processes.

pdns/rec_channel.cc

index cec4dff6a75eccce80eb9df256ab54cd32022526..8ee9331b69a242c92f4ac6c7abeaf4558dbc27a7 100644 (file)
@@ -54,6 +54,12 @@ int RecursorControlChannel::listen(const string& fname)
   if(bind(d_fd, (sockaddr*)&d_local,sizeof(d_local))<0) 
     throw PDNSException("Unable to bind to controlsocket '"+fname+"': "+stringerror());
 
+  // receive buf should be size of max datagram plus address size
+  int bufsz = 60*1024;
+  setsockopt(d_fd, SOL_SOCKET, SO_SNDBUF, &bufsz, sizeof(bufsz));
+  bufsz = 64*1024;
+  setsockopt(d_fd, SOL_SOCKET, SO_RCVBUF, &bufsz, sizeof(bufsz));
+  
   return d_fd;
 }
 
@@ -100,6 +106,12 @@ void RecursorControlChannel::connect(const string& path, const string& fname)
       throw PDNSException("Unable to connect to remote '"+string(remote.sun_path)+"': "+stringerror());
     }
 
+    // receive buf should be size of max datagram plus address size
+    int bufsz = 60*1024;
+    setsockopt(d_fd, SOL_SOCKET, SO_SNDBUF, &bufsz, sizeof(bufsz));
+    bufsz = 64*1024;
+    setsockopt(d_fd, SOL_SOCKET, SO_RCVBUF, &bufsz, sizeof(bufsz));
+
   } catch (...) {
     close(d_fd);
     d_fd=-1;