1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00

new upload-buffer size design that starts with a smallish buffer and increases

its size in case of need
This commit is contained in:
Daniel Stenberg 2000-10-03 11:02:52 +00:00
parent d3f9b2a490
commit f1b8566ea2

View File

@ -112,6 +112,10 @@
#define _MPRINTF_REPLACE /* use our functions only */ #define _MPRINTF_REPLACE /* use our functions only */
#include <curl/mprintf.h> #include <curl/mprintf.h>
#ifndef min
#define min(a, b) ((a) < (b) ? (a) : (b))
#endif
CURLcode CURLcode
_Transfer(struct connectdata *c_conn) _Transfer(struct connectdata *c_conn)
{ {
@ -522,7 +526,7 @@ _Transfer(struct connectdata *c_conn)
if(data->crlf) if(data->crlf)
buf = data->buffer; /* put it back on the buffer */ buf = data->buffer; /* put it back on the buffer */
nread = data->fread(buf, 1, BUFSIZE, data->in); nread = data->fread(buf, 1, conn->upload_bufsize, data->in);
/* the signed int typecase of nread of for systems that has /* the signed int typecase of nread of for systems that has
unsigned size_t */ unsigned size_t */
@ -570,6 +574,15 @@ _Transfer(struct connectdata *c_conn)
if (urg) if (urg)
return urg; return urg;
if(data->progress.ulspeed > conn->upload_bufsize) {
/* If we're transfering more data per second than fits in our buffer,
we increase the buffer size to adjust to the current
speed. However, we must not set it larger than BUFSIZE. We don't
adjust it downwards again since we don't see any point in that!
*/
conn->upload_bufsize=(long)min(data->progress.ulspeed, BUFSIZE);
}
if (data->timeout && (tvdiff (now, start) > data->timeout)) { if (data->timeout && (tvdiff (now, start) > data->timeout)) {
failf (data, "Operation timed out with %d out of %d bytes received", failf (data, "Operation timed out with %d out of %d bytes received",
bytecount, conn->size); bytecount, conn->size);