]> sjero.net Git - wget/blobdiff - src/http.c
warc: support large files.
[wget] / src / http.c
index 69789fcd4770da72ecdaf962e7f38b4c893b8c1b..61001f3b0c6142eb40d2eb07ac36946ed72f984e 100644 (file)
@@ -951,9 +951,12 @@ skip_short_body (int fd, wgint contlen, bool chunked)
                 break;
 
               remaining_chunk_size = strtol (line, &endl, 16);
+              xfree (line);
+
               if (remaining_chunk_size == 0)
                 {
-                  fd_read_line (fd);
+                  line = fd_read_line (fd);
+                  xfree_null (line);
                   break;
                 }
             }
@@ -978,8 +981,13 @@ skip_short_body (int fd, wgint contlen, bool chunked)
         {
           remaining_chunk_size -= ret;
           if (remaining_chunk_size == 0)
-            if (fd_read_line (fd) == NULL)
-              return false;
+            {
+              char *line = fd_read_line (fd);
+              if (line == NULL)
+                return false;
+              else
+                xfree (line);
+            }
         }
 
       /* Safe even if %.*s bogusly expects terminating \0 because
@@ -1704,7 +1712,7 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy,
   char warc_timestamp_str [21];
   char warc_request_uuid [48];
   ip_address *warc_ip = NULL;
-  long int warc_payload_offset = -1;
+  off_t warc_payload_offset = -1;
 
   /* Whether this connection will be kept alive after the HTTP request
      is done. */
@@ -2119,7 +2127,7 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy,
           if (write_error >= 0 && warc_tmp != NULL)
             {
               /* Remember end of headers / start of payload. */
-              warc_payload_offset = ftell (warc_tmp);
+              warc_payload_offset = ftello (warc_tmp);
 
               /* Write a copy of the data to the WARC record. */
               int warc_tmp_written = fwrite (opt.post_data, 1, post_data_size, warc_tmp);
@@ -2131,7 +2139,7 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy,
         {
           if (warc_tmp != NULL)
             /* Remember end of headers / start of payload. */
-            warc_payload_offset = ftell (warc_tmp);
+            warc_payload_offset = ftello (warc_tmp);
 
           write_error = post_file (sock, opt.post_file_name, post_data_size, warc_tmp);
         }