diff --git a/src/acl.c b/src/acl.c
index ef9630c..30a6d2d 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -1308,7 +1308,7 @@
 	opaque = 0;
 	pattern = NULL;
 	args[1] = "";
-	while (fgets(trash, trashlen, file) != NULL) {
+	while (fgets(trash, global.tune.bufsize, file) != NULL) {
 		line++;
 		c = trash;
 
diff --git a/src/cfgparse.c b/src/cfgparse.c
index c6138fd..971371d 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -582,8 +582,7 @@
 		global.tune.bufsize = atol(args[1]);
 		if (global.tune.maxrewrite >= global.tune.bufsize / 2)
 			global.tune.maxrewrite = global.tune.bufsize / 2;
-		trashlen = global.tune.bufsize;
-		trash = realloc(trash, trashlen);
+		trash = realloc(trash, global.tune.bufsize);
 	}
 	else if (!strcmp(args[0], "tune.maxrewrite")) {
 		if (*(args[1]) == 0) {
@@ -1102,7 +1101,7 @@
 					continue;
 				if (strcmp(kwl->kw[index].kw, args[0]) == 0) {
 					/* prepare error message just in case */
-					snprintf(trash, trashlen,
+					snprintf(trash, global.tune.bufsize,
 						 "error near '%s' in '%s' section", args[0], "global");
 					rc = kwl->kw[index].parse(args, CFG_GLOBAL, NULL, NULL, file, linenum, &errmsg);
 					if (rc < 0) {
@@ -2929,7 +2928,7 @@
 			goto out;
 		}
 
-		expr = sample_parse_expr(args, &myidx, trash, trashlen);
+		expr = sample_parse_expr(args, &myidx, trash, global.tune.bufsize);
 		if (!expr) {
 			Alert("parsing [%s:%d] : '%s': %s\n", file, linenum, args[0], trash);
 			err_code |= ERR_ALERT | ERR_FATAL;
@@ -5306,7 +5305,7 @@
 					continue;
 				if (strcmp(kwl->kw[index].kw, args[0]) == 0) {
 					/* prepare error message just in case */
-					snprintf(trash, trashlen,
+					snprintf(trash, global.tune.bufsize,
 						 "error near '%s' in %s section", args[0], cursection);
 					rc = kwl->kw[index].parse(args, CFG_LISTEN, curproxy, &defproxy, file, linenum, &errmsg);
 					if (rc < 0) {
diff --git a/src/checks.c b/src/checks.c
index 326ffde..0c385ca 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -238,7 +238,7 @@
 
 		int health, rise, fall, state;
 
-		chunk_init(&msg, trash, trashlen);
+		chunk_init(&msg, trash, global.tune.bufsize);
 
 		/* FIXME begin: calculate local version of the health/rise/fall/state */
 		health = s->health;
@@ -418,7 +418,7 @@
 		 */
 		xferred = redistribute_pending(s);
 
-		chunk_init(&msg, trash, trashlen);
+		chunk_init(&msg, trash, global.tune.bufsize);
 
 		if (s->state & SRV_MAINTAIN) {
 			chunk_printf(&msg,
@@ -510,7 +510,7 @@
 		 */
 		xferred = check_for_pending(s);
 
-		chunk_init(&msg, trash, trashlen);
+		chunk_init(&msg, trash, global.tune.bufsize);
 
 		if (old_state & SRV_MAINTAIN) {
 			chunk_printf(&msg,
@@ -557,7 +557,7 @@
 	 */
 	xferred = redistribute_pending(s);
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	chunk_printf(&msg,
 		"Load-balancing on %sServer %s/%s is disabled",
@@ -594,7 +594,7 @@
 	 */
 	xferred = check_for_pending(s);
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	chunk_printf(&msg,
 		"Load-balancing on %sServer %s/%s is enabled again",
diff --git a/src/connection.c b/src/connection.c
index 08b53ae..310e0da 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -280,7 +280,7 @@
 		goto fail;
 
 	do {
-		len = recv(conn->t.sock.fd, trash, trashlen, MSG_PEEK);
+		len = recv(conn->t.sock.fd, trash, global.tune.bufsize, MSG_PEEK);
 		if (len < 0) {
 			if (errno == EINTR)
 				continue;
@@ -548,7 +548,7 @@
 	if (!(conn->flags & CO_FL_ADDR_TO_SET))
 		goto out_error;
 
-	len = make_proxy_line(trash, trashlen, &conn->addr.from, &conn->addr.to);
+	len = make_proxy_line(trash, global.tune.bufsize, &conn->addr.from, &conn->addr.to);
 	if (!len)
 		goto out_error;
 
diff --git a/src/dumpstats.c b/src/dumpstats.c
index d0f0345..21517be 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -599,7 +599,7 @@
 	case STAT_CLI_O_TAB:
 		if (!ts)
 			return;
-		chunk_init(&msg, trash, trashlen);
+		chunk_init(&msg, trash, global.tune.bufsize);
 		if (!stats_dump_table_head_to_buffer(&msg, si, px, px))
 			return;
 		stats_dump_table_entry_to_buffer(&msg, si, px, ts);
@@ -1026,7 +1026,7 @@
 			}
 
 			/* return server's effective weight at the moment */
-			snprintf(trash, trashlen, "%d (initial %d)\n", sv->uweight, sv->iweight);
+			snprintf(trash, global.tune.bufsize, "%d (initial %d)\n", sv->uweight, sv->iweight);
 			bi_putstr(si->ib, trash);
 			return 1;
 		}
@@ -1495,7 +1495,7 @@
 			if (buffer_almost_full(si->ib->buf))
 				break;
 
-			reql = bo_getline(si->ob, trash, trashlen);
+			reql = bo_getline(si->ob, trash, global.tune.bufsize);
 			if (reql <= 0) { /* closed or EOL not found */
 				if (reql == 0)
 					break;
@@ -1668,7 +1668,7 @@
 	struct chunk msg;
 	unsigned int up;
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	switch (si->conn.xprt_st) {
 	case STAT_ST_INIT:
@@ -1784,7 +1784,7 @@
 	struct session *s = si->conn.xprt_ctx;
 	struct chunk msg;
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	switch (si->conn.xprt_st) {
 	case STAT_ST_INIT:
@@ -1888,7 +1888,7 @@
 	struct chunk msg;
 	unsigned int up;
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	switch (si->conn.xprt_st) {
 	case STAT_ST_INIT:
@@ -2258,7 +2258,7 @@
 	struct listener *l;
 	struct chunk msg;
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	switch (si->applet.ctx.stats.px_st) {
 	case STAT_PX_ST_INIT:
@@ -3315,7 +3315,7 @@
 	extern const char *monthname[12];
 	char pn[INET6_ADDRSTRLEN];
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 	sess = si->applet.ctx.sess.target;
 
 	if (si->applet.ctx.sess.section > 0 && si->applet.ctx.sess.uid != sess->uniq_id) {
@@ -3569,7 +3569,7 @@
 		return 1;
 	}
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	switch (si->conn.xprt_st) {
 	case STAT_ST_INIT:
@@ -3790,7 +3790,7 @@
 		return 1;
 	}
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	while (si->conn.xprt_st != STAT_ST_FIN) {
 		switch (si->conn.xprt_st) {
@@ -3985,7 +3985,7 @@
 	if (unlikely(si->ib->flags & (CF_WRITE_ERROR|CF_SHUTW)))
 		return 1;
 
-	chunk_init(&msg, trash, trashlen);
+	chunk_init(&msg, trash, global.tune.bufsize);
 
 	if (!si->applet.ctx.errors.px) {
 		/* the function had not been called yet, let's prepare the
diff --git a/src/haproxy.c b/src/haproxy.c
index 74c1e5b..6d00438 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -345,7 +345,7 @@
 
 		send_log(p, LOG_NOTICE, "SIGHUP received, dumping servers states for proxy %s.\n", p->id);
 		while (s) {
-			snprintf(trash, trashlen,
+			snprintf(trash, global.tune.bufsize,
 				 "SIGHUP: Server %s/%s is %s. Conn: %d act, %d pend, %lld tot.",
 				 p->id, s->id,
 				 (s->state & SRV_RUNNING) ? "UP" : "DOWN",
@@ -357,18 +357,18 @@
 
 		/* FIXME: those info are a bit outdated. We should be able to distinguish between FE and BE. */
 		if (!p->srv) {
-			snprintf(trash, trashlen,
+			snprintf(trash, global.tune.bufsize,
 				 "SIGHUP: Proxy %s has no servers. Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.",
 				 p->id,
 				 p->feconn, p->beconn, p->totpend, p->nbpend, p->fe_counters.cum_conn, p->be_counters.cum_conn);
 		} else if (p->srv_act == 0) {
-			snprintf(trash, trashlen,
+			snprintf(trash, global.tune.bufsize,
 				 "SIGHUP: Proxy %s %s ! Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.",
 				 p->id,
 				 (p->srv_bck) ? "is running on backup servers" : "has no server available",
 				 p->feconn, p->beconn, p->totpend, p->nbpend, p->fe_counters.cum_conn, p->be_counters.cum_conn);
 		} else {
-			snprintf(trash, trashlen,
+			snprintf(trash, global.tune.bufsize,
 				 "SIGHUP: Proxy %s has %d active servers and %d backup servers available."
 				 " Conn: act(FE+BE): %d+%d, %d pend (%d unass), tot(FE+BE): %lld+%lld.",
 				 p->id, p->srv_act, p->srv_bck,
@@ -402,7 +402,7 @@
 	char *progname;
 	char *change_dir = NULL;
 
-	trash = malloc(trashlen);
+	trash = malloc(global.tune.bufsize);
 
 	/* NB: POSIX does not make it mandatory for gethostname() to NULL-terminate
 	 * the string in case of truncation, and at least FreeBSD appears not to do
diff --git a/src/peers.c b/src/peers.c
index 2cf0e52..05baa02 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -230,7 +230,7 @@
 				si->applet.st0 = PEER_SESSION_GETVERSION;
 				/* fall through */
 			case PEER_SESSION_GETVERSION:
-				reql = bo_getline(si->ob, trash, trashlen);
+				reql = bo_getline(si->ob, trash, global.tune.bufsize);
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
@@ -261,7 +261,7 @@
 				si->applet.st0 = PEER_SESSION_GETHOST;
 				/* fall through */
 			case PEER_SESSION_GETHOST:
-				reql = bo_getline(si->ob, trash, trashlen);
+				reql = bo_getline(si->ob, trash, global.tune.bufsize);
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
@@ -291,7 +291,7 @@
 			case PEER_SESSION_GETPEER: {
 				struct peer *curpeer;
 				char *p;
-				reql = bo_getline(si->ob, trash, trashlen);
+				reql = bo_getline(si->ob, trash, global.tune.bufsize);
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
@@ -344,7 +344,7 @@
 				size_t key_size;
 				char *p;
 
-				reql = bo_getline(si->ob, trash, trashlen);
+				reql = bo_getline(si->ob, trash, global.tune.bufsize);
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
@@ -445,7 +445,7 @@
 			case PEER_SESSION_SENDSUCCESS:{
 				struct peer_session *ps = (struct peer_session *)si->conn.xprt_ctx;
 
-				repl = snprintf(trash, trashlen, "%d\n", PEER_SESSION_SUCCESSCODE);
+				repl = snprintf(trash, global.tune.bufsize, "%d\n", PEER_SESSION_SUCCESSCODE);
 				repl = bi_putblk(si->ib, trash, repl);
 				if (repl <= 0) {
 					if (repl == -1)
@@ -496,7 +496,7 @@
 				struct peer_session *ps = (struct peer_session *)si->conn.xprt_ctx;
 
 				/* Send headers */
-				repl = snprintf(trash, trashlen,
+				repl = snprintf(trash, global.tune.bufsize,
 				                PEER_SESSION_PROTO_NAME " 1.0\n%s\n%s %d\n%s %lu %d\n",
 				                ps->peer->id,
 				                localpeer,
@@ -505,7 +505,7 @@
 				                ps->table->table->type,
 				                (int)ps->table->table->key_size);
 
-				if (repl >= trashlen) {
+				if (repl >= global.tune.bufsize) {
 					si->applet.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
@@ -528,7 +528,7 @@
 				if (si->ib->flags & CF_WRITE_PARTIAL)
 					ps->statuscode = PEER_SESSION_CONNECTEDCODE;
 
-				reql = bo_getline(si->ob, trash, trashlen);
+				reql = bo_getline(si->ob, trash, global.tune.bufsize);
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
@@ -903,7 +903,7 @@
 							}
 
 							ts = eb32_entry(eb, struct stksess, upd);
-							msglen = peer_prepare_datamsg(ts, ps, trash, trashlen);
+							msglen = peer_prepare_datamsg(ts, ps, trash, global.tune.bufsize);
 							if (msglen) {
 								/* message to buffer */
 								repl = bi_putblk(si->ib, trash, msglen);
@@ -937,7 +937,7 @@
 							}
 
 							ts = eb32_entry(eb, struct stksess, upd);
-							msglen = peer_prepare_datamsg(ts, ps, trash, trashlen);
+							msglen = peer_prepare_datamsg(ts, ps, trash, global.tune.bufsize);
 							if (msglen) {
 								/* message to buffer */
 								repl = bi_putblk(si->ib, trash, msglen);
@@ -995,7 +995,7 @@
 						}
 
 						ts = eb32_entry(eb, struct stksess, upd);
-						msglen = peer_prepare_datamsg(ts, ps, trash, trashlen);
+						msglen = peer_prepare_datamsg(ts, ps, trash, global.tune.bufsize);
 						if (msglen) {
 							/* message to buffer */
 							repl = bi_putblk(si->ib, trash, msglen);
@@ -1015,7 +1015,7 @@
 				goto out;
 			}
 			case PEER_SESSION_EXIT:
-				repl = snprintf(trash, trashlen, "%d\n", si->applet.st1);
+				repl = snprintf(trash, global.tune.bufsize, "%d\n", si->applet.st1);
 
 				if (bi_putblk(si->ib, trash, repl) == -1)
 					goto out;
diff --git a/src/proto_http.c b/src/proto_http.c
index 00340d7..817ef8c 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -391,14 +391,14 @@
 static void http_silent_debug(int line, struct session *s)
 {
 	int size = 0;
-	size += snprintf(trash + size, trashlen - size,
+	size += snprintf(trash + size, global.tune.bufsize - size,
 			 "[%04d] req: p=%d(%d) s=%d bf=%08x an=%08x data=%p size=%d l=%d w=%p r=%p o=%p sm=%d fw=%ld tf=%08x\n",
 			 line,
 			 s->si[0].state, s->si[0].fd, s->txn.req.msg_state, s->req->flags, s->req->analysers,
 			 s->req->buf->data, s->req->buf->size, s->req->l, s->req->w, s->req->r, s->req->buf->p, s->req->buf->o, s->req->to_forward, s->txn.flags);
 	write(-1, trash, size);
 	size = 0;
-	size += snprintf(trash + size, trashlen - size,
+	size += snprintf(trash + size, global.tune.bufsize - size,
 			 " %04d  rep: p=%d(%d) s=%d bf=%08x an=%08x data=%p size=%d l=%d w=%p r=%p o=%p sm=%d fw=%ld\n",
 			 line,
 			 s->si[1].state, s->si[1].fd, s->txn.rsp.msg_state, s->rep->flags, s->rep->analysers,
@@ -769,7 +769,7 @@
 	/* 1: create the response header */
 	rdr.len = strlen(HTTP_302);
 	rdr.str = trash;
-	rdr.size = trashlen;
+	rdr.size = global.tune.bufsize;
 	memcpy(rdr.str, HTTP_302, rdr.len);
 
 	srv = target_srv(&s->target);
@@ -3099,7 +3099,7 @@
 			realm = do_stats?STATS_DEFAULT_REALM:px->id;
 
 		sprintf(trash, (txn->flags & TX_USE_PX_CONN) ? HTTP_407_fmt : HTTP_401_fmt, realm);
-		chunk_initlen(&msg, trash, trashlen, strlen(trash));
+		chunk_initlen(&msg, trash, global.tune.bufsize, strlen(trash));
 		txn->status = 401;
 		stream_int_retnclose(req->prod, &msg);
 		/* on 401 we still count one error, because normal browsing
@@ -3207,7 +3207,7 @@
 		}
 
 		if (ret) {
-			struct chunk rdr = { .str = trash, .size = trashlen, .len = 0 };
+			struct chunk rdr = { .str = trash, .size = global.tune.bufsize, .len = 0 };
 			const char *msg_fmt;
 
 			/* build redirect message */
@@ -3950,7 +3950,7 @@
 	hdr_val += hdr_name_len;
 	*hdr_val++ = ':';
 	*hdr_val++ = ' ';
-	hdr_val += strlcpy2(hdr_val, srv_name, trash + trashlen - hdr_val);
+	hdr_val += strlcpy2(hdr_val, srv_name, trash + global.tune.bufsize - hdr_val);
 	http_header_add_tail2(&txn->req, &txn->hdr_idx, trash, hdr_val - trash);
 
 	if (old_o) {
@@ -7654,7 +7654,7 @@
 		if (start[max] == '\r' || start[max] == '\n')
 			break;
 
-	UBOUND(max, trashlen - len - 3);
+	UBOUND(max, global.tune.bufsize - len - 3);
 	len += strlcpy2(trash + len, start, max + 1);
 	trash[len++] = '\n';
 	if (write(1, trash, len) < 0) /* shut gcc warning */;
diff --git a/src/session.c b/src/session.c
index f148cb8..1ac0cad 100644
--- a/src/session.c
+++ b/src/session.c
@@ -152,7 +152,7 @@
 		 *  - HEALTH mode without HTTP check => just send "OK"
 		 *  - TCP mode from monitoring address => just close
 		 */
-		recv(cfd, trash, trashlen, MSG_DONTWAIT);
+		recv(cfd, trash, global.tune.bufsize, MSG_DONTWAIT);
 		if (p->mode == PR_MODE_HTTP ||
 		    (p->mode == PR_MODE_HEALTH && (p->options2 & PR_O2_CHK_ANY) == PR_O2_HTTP_CHK))
 			send(cfd, "HTTP/1.0 200 OK\r\n\r\n", 19, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_MORE);
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index 330f47a..1c2c72d 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -173,7 +173,7 @@
 	if (!servername)
 		return SSL_TLSEXT_ERR_NOACK;
 
-	for (i = 0; i < trashlen; i++) {
+	for (i = 0; i < global.tune.bufsize; i++) {
 		if (!servername[i])
 			break;
 		trash[i] = tolower(servername[i]);
@@ -887,7 +887,7 @@
 			 * TCP sockets. We first try to drain possibly pending
 			 * data to avoid this as much as possible.
 			 */
-			ret = recv(conn->t.sock.fd, trash, trashlen, MSG_NOSIGNAL|MSG_DONTWAIT);
+			ret = recv(conn->t.sock.fd, trash, global.tune.bufsize, MSG_NOSIGNAL|MSG_DONTWAIT);
 			goto out_error;
 		}
 	}
diff --git a/src/stream_interface.c b/src/stream_interface.c
index c74f453..b3b095a 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -507,7 +507,7 @@
 		 * (which is recomputed every time since it's constant). If
 		 * it is positive, it means we have to send from the start.
 		 */
-		ret = make_proxy_line(trash, trashlen, &si->ob->prod->conn.addr.from, &si->ob->prod->conn.addr.to);
+		ret = make_proxy_line(trash, global.tune.bufsize, &si->ob->prod->conn.addr.from, &si->ob->prod->conn.addr.to);
 		if (!ret)
 			goto out_error;
 
