From: Willy Tarreau Date: Tue, 14 Mar 2017 13:50:52 +0000 (+0100) Subject: CONTRIB: tcploop: use the trash instead of NULL for recv() X-Git-Tag: v1.8-dev1~79 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a84a2dba946bd49676f5222d49eca8d40346e53c;p=thirdparty%2Fhaproxy.git CONTRIB: tcploop: use the trash instead of NULL for recv() NULL is Linux-centric and we're not focused on performance here but portability and reproducibility. Don't use NULL and use the trash instead. It may lead to multiple recv() calls for large blocks but as a benefit it will be possible to see the contents with strace. --- diff --git a/contrib/tcploop/tcploop.c b/contrib/tcploop/tcploop.c index d1995f46e4..cb9e5f1246 100644 --- a/contrib/tcploop/tcploop.c +++ b/contrib/tcploop/tcploop.c @@ -444,6 +444,7 @@ int tcp_recv(int sock, const char *arg) { int count = -1; // stop at first read int ret; + int max; if (arg[1]) { count = atoi(arg + 1); @@ -454,7 +455,10 @@ int tcp_recv(int sock, const char *arg) } while (1) { - ret = recv(sock, NULL, (count > 0) ? count : INT_MAX, MSG_NOSIGNAL | MSG_TRUNC); + max = (count > 0) ? count : INT_MAX; + if (max > sizeof(trash)) + max = sizeof(trash); + ret = recv(sock, trash, max, MSG_NOSIGNAL | MSG_TRUNC); if (ret < 0) { if (errno == EINTR) continue;