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

Upped the buffer size to 17000+ bytes to prepare for the upcoming test 1003

that verfies ridiculously long server response lines. Also changed sprintf
to snprintf in a few places.
This commit is contained in:
Daniel Stenberg 2007-08-22 13:57:49 +00:00
parent 014f1bea9a
commit 232a4553b8

View File

@ -175,8 +175,11 @@ static int juggle(curl_socket_t *sockfdp,
ssize_t nread_socket; ssize_t nread_socket;
ssize_t bytes_written; ssize_t bytes_written;
ssize_t buffer_len; ssize_t buffer_len;
unsigned char buffer[256]; /* FIX: bigger buffer */
char data[256]; /* 'buffer' is this excessively large only to be able to support things like
test 1003 which tests exceedingly large server response lines */
unsigned char buffer[17010];
char data[16];
timeout.tv_sec = 120; timeout.tv_sec = 120;
timeout.tv_usec = 0; timeout.tv_usec = 0;
@ -280,7 +283,7 @@ static int juggle(curl_socket_t *sockfdp,
Replies to PORT with "IPv[num]/[port]" */ Replies to PORT with "IPv[num]/[port]" */
sprintf((char *)buffer, "IPv%d/%d\n", use_ipv6?6:4, (int)port); sprintf((char *)buffer, "IPv%d/%d\n", use_ipv6?6:4, (int)port);
buffer_len = (ssize_t)strlen((char *)buffer); buffer_len = (ssize_t)strlen((char *)buffer);
sprintf(data, "PORT\n%04x\n", buffer_len); snprintf(data, sizeof(data), "PORT\n%04x\n", buffer_len);
write(fileno(stdout), data, 10); write(fileno(stdout), data, 10);
write(fileno(stdout), buffer, buffer_len); write(fileno(stdout), buffer, buffer_len);
} }
@ -302,11 +305,23 @@ static int juggle(curl_socket_t *sockfdp,
(int)sizeof(buffer), buffer_len); (int)sizeof(buffer), buffer_len);
return FALSE; return FALSE;
} }
nread_stdin = read(fileno(stdin), buffer, buffer_len);
if(nread_stdin != buffer_len)
return FALSE;
logmsg("> %d bytes data, server => client", buffer_len); logmsg("> %d bytes data, server => client", buffer_len);
/*
* To properly support huge data chunks, we need to repeat the call
* to read() until we're done or it fails.
*/
nread_stdin = 0;
do {
/* get data in the buffer at the correct position */
ssize_t rc = read(fileno(stdin), &buffer[nread_stdin],
buffer_len - nread_stdin);
logmsg("read %d bytes", rc);
if(rc <= 0)
return FALSE;
nread_stdin += rc;
} while (nread_stdin < buffer_len);
lograw(buffer, buffer_len); lograw(buffer, buffer_len);
if(*mode == PASSIVE_LISTEN) { if(*mode == PASSIVE_LISTEN) {
@ -378,7 +393,7 @@ static int juggle(curl_socket_t *sockfdp,
return TRUE; return TRUE;
} }
sprintf(data, "DATA\n%04x\n", nread_socket); snprintf(data, sizeof(data), "DATA\n%04x\n", nread_socket);
write(fileno(stdout), data, 10); write(fileno(stdout), data, 10);
write(fileno(stdout), buffer, nread_socket); write(fileno(stdout), buffer, nread_socket);