BBlack has submitted this change and it was merged.

Change subject: minor tweak for socket reuse
......................................................................


minor tweak for socket reuse

Change-Id: I0bf459360899a1df3c476a81fdf67dda19f8aa5e
---
M src/purger.c
1 file changed, 6 insertions(+), 0 deletions(-)

Approvals:
  BBlack: Verified; Looks good to me, approved



diff --git a/src/purger.c b/src/purger.c
index c479baf..4763e3d 100644
--- a/src/purger.c
+++ b/src/purger.c
@@ -356,6 +356,12 @@
     if(fcntl(s->fd, F_SETFL, (fcntl(s->fd, F_GETFL, 0)) | O_NONBLOCK) == -1)
         dmn_log_fatal("Failed to set O_NONBLOCK on TCP socket: %s", 
dmn_logf_errno());
 
+    // Atypical with no intent to bind(), but may help with racing other 
threads for
+    //  ephemeral port allocation in Linux leading to random socket errors, 
supposedly?
+    int opt_one = 1;
+    if(setsockopt(s->fd, SOL_SOCKET, SO_REUSEADDR, &opt_one, sizeof(int)))
+        dmn_log_warn("Failed to set SO_REUSEADDR on TCP socket: %s", 
dmn_logf_errno());
+
     // Initiate a connect() attempt.  In theory this always returns 
-1/EINPROGRESS for
     //   a nonblocking socket, but it's possible it succeeds immediately for 
localhost...
     if(connect(s->fd, &s->daddr.sa, s->daddr.len) == -1) {

-- 
To view, visit https://gerrit.wikimedia.org/r/71625
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I0bf459360899a1df3c476a81fdf67dda19f8aa5e
Gerrit-PatchSet: 1
Gerrit-Project: operations/software/varnish/vhtcpd
Gerrit-Branch: master
Gerrit-Owner: BBlack <[email protected]>
Gerrit-Reviewer: BBlack <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to