From 8c80a9d1e26be192d30a075e2c7397f8f12498c6 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 17 Aug 2018 11:36:12 +0200 Subject: upload: change default UPLOAD_BUFSIZE to 64KB To make uploads significantly faster in some circumstances. Part 2 of #2888 Closes #2892 --- lib/transfer.c | 2 +- lib/urldata.h | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/transfer.c b/lib/transfer.c index 96d8ab48f..ab9094adc 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -992,7 +992,7 @@ static CURLcode readwrite_upload(struct Curl_easy *data, (data->set.crlf))) { /* Do we need to allocate a scratch buffer? */ if(!data->state.scratch) { - data->state.scratch = malloc(2 * data->set.buffer_size); + data->state.scratch = malloc(2 * UPLOAD_BUFSIZE); if(!data->state.scratch) { failf(data, "Failed to alloc scratch buffer!"); diff --git a/lib/urldata.h b/lib/urldata.h index 502cff362..67db3b2fc 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -143,8 +143,13 @@ typedef ssize_t (Curl_recv)(struct connectdata *conn, /* connection data */ #endif /* HAVE_LIBSSH2_H */ /* The upload buffer size, should not be smaller than CURL_MAX_WRITE_SIZE, as - it needs to hold a full buffer as could be sent in a write callback */ -#define UPLOAD_BUFSIZE CURL_MAX_WRITE_SIZE + it needs to hold a full buffer as could be sent in a write callback. + + The size was 16KB for many years but was bumped to 64KB because it makes + libcurl able to do significantly faster uploads in some circumstances. Even + larger buffers can help further, but this is deemed a fair memory/speed + compromise. */ +#define UPLOAD_BUFSIZE 65536 /* The "master buffer" is for HTTP pipelining */ #define MASTERBUF_SIZE 16384 -- cgit v1.2.3