From a84a2dba946bd49676f5222d49eca8d40346e53c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 14 Mar 2017 14:50:52 +0100 Subject: [PATCH] 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. --- contrib/tcploop/tcploop.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/contrib/tcploop/tcploop.c b/contrib/tcploop/tcploop.c index d1995f46e..cb9e5f124 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;