Author: bapt
Date: Sat May 30 21:49:18 2015
New Revision: 283793
URL: https://svnweb.freebsd.org/changeset/base/283793

Log:
  MFC: r281039
  
  Allow fetching pkg(8) even if servers/proxies are not passing Content-length

Modified:
  stable/10/usr.sbin/pkg/pkg.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.sbin/pkg/pkg.c
==============================================================================
--- stable/10/usr.sbin/pkg/pkg.c        Sat May 30 21:47:25 2015        
(r283792)
+++ stable/10/usr.sbin/pkg/pkg.c        Sat May 30 21:49:18 2015        
(r283793)
@@ -47,7 +47,6 @@ __FBSDID("$FreeBSD$");
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
-#include <time.h>
 #include <unistd.h>
 #include <ucl.h>
 
@@ -177,14 +176,11 @@ fetch_to_fd(const char *url, char *path)
        /* To store _https._tcp. + hostname + \0 */
        int fd;
        int retry, max_retry;
-       off_t done, r;
-       time_t now, last;
+       ssize_t r;
        char buf[10240];
        char zone[MAXHOSTNAMELEN + 13];
        static const char *mirror_type = NULL;
 
-       done = 0;
-       last = 0;
        max_retry = 3;
        current = mirrors = NULL;
        remote = NULL;
@@ -238,19 +234,16 @@ fetch_to_fd(const char *url, char *path)
                }
        }
 
-       while (done < st.size) {
-               if ((r = fread(buf, 1, sizeof(buf), remote)) < 1)
-                       break;
-
+       while ((r = fread(buf, 1, sizeof(buf), remote)) > 0) {
                if (write(fd, buf, r) != r) {
                        warn("write()");
                        goto fetchfail;
                }
+       }
 
-               done += r;
-               now = time(NULL);
-               if (now > last || done == st.size)
-                       last = now;
+       if (r != 0) {
+               warn("An error occurred while fetching pkg(8)");
+               goto fetchfail;
        }
 
        if (ferror(remote))
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to