c0559c7337852834308620733c839b69d07549d3
galt
  Fri Aug 24 15:33:17 2018 -0700
Fixes problem with byterange and double redirect in net.c for example hubs and tracks hosted on hgwdev.

diff --git src/lib/net.c src/lib/net.c
index b8ddb22..75dcea1 100644
--- src/lib/net.c
+++ src/lib/net.c
@@ -1613,58 +1613,58 @@
     if (success && !newUrl) /* success after 0 to 5 redirects */
         {
 	if (redirectCount > 0)
 	    {
 	    *redirectedSd = sd;
 	    *redirectedUrl = url;
 	    }
 	else
 	    {
 	    *redirectedSd = -1;
 	    *redirectedUrl = NULL;
 	    }
 	return TRUE;
 	}
     close(sd);
-    if (redirectCount > 0)
-	freeMem(url);
     if (success)
 	{
 	/* we have a new url to try */
 	++redirectCount;
 	if (redirectCount > 5)
 	    {
 	    warn("code 30x redirects: exceeded limit of 5 redirects, %s", newUrl);
 	    success = FALSE;
 	    }
 	else if (!startsWith("http://",newUrl) 
               && !startsWith("https://",newUrl))
 	    {
 	    warn("redirected to non-http(s): %s", newUrl);
 	    success = FALSE;
 	    }
 	else 
 	    {
 	    newUrl = transferParamsToRedirectedUrl(url, newUrl);		
 	    sd = netUrlOpen(newUrl);
 	    if (sd < 0)
 		{
 		warn("Couldn't open %s", newUrl);
 		success = FALSE;
 		}
 	    }
 	}
+    if (redirectCount > 1)
+	freeMem(url);
     if (!success)
 	{  /* failure after 0 to 5 redirects */
 	if (redirectCount > 0)
 	    freeMem(newUrl);
 	return FALSE;
 	}
     url = newUrl;
     }
 return FALSE;
 }
 
 struct lineFile *netLineFileMayOpen(char *url)
 /* Return a lineFile attached to url. http skips header.
  * Supports some compression formats.  Prints warning message, but
  * does not abort, just returning NULL if there's a problem. */