aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2001-09-12 12:02:12 +0000
committerDaniel Stenberg <daniel@haxx.se>2001-09-12 12:02:12 +0000
commit2cb893575d41c0878c9490d56ab2fefcf3e1b4c4 (patch)
tree37bf96d2e6b00deb6fe3d8aeb0206cdfee355f21
parent63f1f580770a43ecaaffc7fc2601a638dd12a43b (diff)
moved a 100K buffer from the transfer loop to the urlstate struct, as it
seriously decreases the amount of used stack space
-rw-r--r--lib/transfer.c14
-rw-r--r--lib/urldata.h2
2 files changed, 8 insertions, 8 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index e2685b552..499454681 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -797,13 +797,9 @@ Transfer(struct connectdata *c_conn)
if((keepon & KEEP_WRITE) && FD_ISSET(conn->writesockfd, &writefd)) {
/* write */
- char scratch[BUFSIZE * 2];
int i, si;
size_t bytes_written;
- if(data->set.crlf)
- buf = data->state.buffer; /* put it back on the buffer */
-
nread = data->set.fread(buf, 1, conn->upload_bufsize, data->set.in);
/* the signed int typecase of nread of for systems that has
@@ -821,15 +817,15 @@ Transfer(struct connectdata *c_conn)
if (data->set.crlf) {
for(i = 0, si = 0; i < (int)nread; i++, si++) {
if (buf[i] == 0x0a) {
- scratch[si++] = 0x0d;
- scratch[si] = 0x0a;
+ data->state.scratch[si++] = 0x0d;
+ data->state.scratch[si] = 0x0a;
}
else {
- scratch[si] = buf[i];
+ data->state.scratch[si] = buf[i];
}
}
nread = si;
- buf = scratch; /* point to the new buffer */
+ buf = data->state.scratch; /* point to the new buffer */
}
/* write to socket */
@@ -840,6 +836,8 @@ Transfer(struct connectdata *c_conn)
failf(data, "Failed uploading data");
return CURLE_WRITE_ERROR;
}
+ if(data->set.crlf)
+ buf = data->state.buffer; /* put it back on the buffer */
}
diff --git a/lib/urldata.h b/lib/urldata.h
index b8acc5490..e585118c7 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -439,6 +439,8 @@ struct UrlState {
struct curl_ssl_session *session; /* array of 'numsessions' size */
long sessionage; /* number of the most recent session */
+
+ char scratch[BUFSIZE*2]; /* huge buffer when doing upload CRLF replacing */
};