]> sjero.net Git - wget/commitdiff
[svn] Read the data in skip_short_body directly.
authorhniksic <devnull@localhost>
Sun, 30 Nov 2003 14:33:00 +0000 (06:33 -0800)
committerhniksic <devnull@localhost>
Sun, 30 Nov 2003 14:33:00 +0000 (06:33 -0800)
src/ChangeLog
src/http.c
src/init.c

index dc4175520d9a6555907d5775822bb9c8e97e3e15..57e27d785e4897ba8b5fd439ae3d199e484ef997 100644 (file)
@@ -1,3 +1,8 @@
+2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
+
+       * http.c (skip_short_body): Renamed skip_body to skip_short_body;
+       don't bother calling fd_read_body.
+
 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
 
        * retr.c (fd_read_body): Sanitize arguments and document them
index 7d38c50657b7ccad4688ff51cd9d5e9c011f15ef..169cebec9b65507e2e565d348566befdb2c8b2d9 100644 (file)
@@ -740,27 +740,31 @@ parse_content_range (const char *hdr, long *first_byte_ptr,
   return 1;
 }
 
-/* Read the body of the request, but don't store it anywhere.  This is
-   useful when reading error responses that are not logged anywhere,
-   but which need to be read so the same connection can be reused.  */
+/* Read the body of the request, but don't store it anywhere and don't
+   display a progress gauge.  This is useful for reading the error
+   responses whose bodies don't need to be displayed or logged, but
+   which need to be read anyway.  */
 
 static void
-skip_body (int fd, long contlen)
+skip_short_body (int fd, long contlen)
 {
-  int oldverbose;
-  long dummy;
-
   /* Skipping the body doesn't make sense if the content length is
      unknown because, in that case, persistent connections cannot be
      used.  (#### This is not the case with HTTP/1.1 where they can
      still be used with the magic of the "chunked" transfer!)  */
   if (contlen == -1)
     return;
+  DEBUGP (("Skipping %ld bytes of body data... ", contlen));
 
-  oldverbose = opt.verbose;
-  opt.verbose = 0;
-  fd_read_body (fd, NULL, contlen, 1, 0, &dummy, NULL);
-  opt.verbose = oldverbose;
+  while (contlen > 0)
+    {
+      char dlbuf[512];
+      int ret = fd_read (fd, dlbuf, MIN (contlen, sizeof (dlbuf)), -1);
+      if (ret <= 0)
+       return;
+      contlen -= ret;
+    }
+  DEBUGP (("done.\n"));
 }
 \f
 /* Persistent connections.  Currently, we cache the most recently used
@@ -1470,7 +1474,7 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy)
   if (statcode == HTTP_STATUS_UNAUTHORIZED)
     {
       /* Authorization is required.  */
-      skip_body (sock, contlen);
+      skip_short_body (sock, contlen);
       CLOSE_FINISH (sock);
       if (auth_tried_already || !(user && passwd))
        {
@@ -1575,7 +1579,7 @@ gethttp (struct url *u, struct http_stat *hs, int *dt, struct url *proxy)
                     hs->newloc ? hs->newloc : _("unspecified"),
                     hs->newloc ? _(" [following]") : "");
          if (keep_alive)
-           skip_body (sock, contlen);
+           skip_short_body (sock, contlen);
          CLOSE_FINISH (sock);
          xfree_null (type);
          return NEWLOCATION;
index 3e8c8795881de927563d3db0ac8d4e175c93c7f3..b48a57c13aa7eb4ff7a60b792237947577b2607e 100644 (file)
@@ -179,7 +179,7 @@ static struct {
   { "passwd",          &opt.ftp_pass,          cmd_string },
   { "postdata",                &opt.post_data,         cmd_string },
   { "postfile",                &opt.post_file_name,    cmd_file },
-  { "preservepermissions", &opt.preserve_perm,     cmd_boolean },
+  { "preservepermissions", &opt.preserve_perm, cmd_boolean },
   { "progress",                &opt.progress_type,     cmd_spec_progress },
   { "proxypasswd",     &opt.proxy_passwd,      cmd_string },
   { "proxyuser",       &opt.proxy_user,        cmd_string },