]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
moved a 100K buffer from the transfer loop to the urlstate struct, as it
authorDaniel Stenberg <daniel@haxx.se>
Wed, 12 Sep 2001 12:02:12 +0000 (12:02 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 12 Sep 2001 12:02:12 +0000 (12:02 +0000)
seriously decreases the amount of used stack space

lib/transfer.c
lib/urldata.h

index e2685b55224a4c96adbeceec253c0daa98a800cd..499454681073f4864fbd305f2dc9e8249dc54f21 100644 (file)
@@ -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 */
 
         }
 
index b8acc5490e0f3dec420f29067dc2bbc0b576b514..e585118c7409453c4d3c3f6b9eb3432a19a630fd 100644 (file)
@@ -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 */
 };