@cryptotaxi247 / netdata-1 / commits / f02e9d17b

do not set TCP_NODELAY on unix domain sockets and do not log errors about optional setsockopt() calls; fixes #3682

Costa Tsaousis (ktsaou) committed May 8, 2018 at 01:37 UTC f02e9d17bfe0019bddf5e30cb5180f1dd6245f50
2 files changed +6 -4
src/web_client.h
+1
@@ -70,6 +70,7 @@ typedef enum web_client_flags {
70 #define web_client_set_tcp(w) web_client_flag_set(w, WEB_CLIENT_FLAG_TCP_CLIENT)
71 #define web_client_set_unix(w) web_client_flag_set(w, WEB_CLIENT_FLAG_UNIX_CLIENT)
72 #define web_client_check_unix(w) web_client_flag_check(w, WEB_CLIENT_FLAG_UNIX_CLIENT)
73 +#define web_client_check_tcp(w) web_client_flag_check(w, WEB_CLIENT_FLAG_TCP_CLIENT)
74
75 #define web_client_is_corkable(w) web_client_flag_check(w, WEB_CLIENT_FLAG_TCP_CLIENT)
76
src/web_server.c
+5 -4
@@ -335,12 +335,13 @@ static void web_client_release(struct web_client *w) {
335
336 static void web_client_initialize_connection(struct web_client *w) {
337 int flag = 1;
338 - if(setsockopt(w->ifd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)) != 0)
339 - error("%llu: failed to enable TCP_NODELAY on socket fd %d.", w->id, w->ifd);
338 +
339 + if(unlikely(web_client_check_tcp(w) && setsockopt(w->ifd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)) != 0))
340 + debug(D_WEB_CLIENT, "%llu: failed to enable TCP_NODELAY on socket fd %d.", w->id, w->ifd);
341
342 flag = 1;
342 - if(setsockopt(w->ifd, SOL_SOCKET, SO_KEEPALIVE, (char *) &flag, sizeof(int)) != 0)
343 - error("%llu: failed to enable SO_KEEPALIVE on socket fd %d.", w->id, w->ifd);
343 + if(unlikely(setsockopt(w->ifd, SOL_SOCKET, SO_KEEPALIVE, (char *) &flag, sizeof(int)) != 0))
344 + debug(D_WEB_CLIENT, "%llu: failed to enable SO_KEEPALIVE on socket fd %d.", w->id, w->ifd);
345
346 web_client_update_acl_matches(w);
347