a875bb715ab03074e9fd04ec13f0e4c579712d2e
galt
  Fri Oct 21 15:37:28 2011 -0700
hack for Apache 2.2.21 bug
diff --git src/lib/net.c src/lib/net.c
index eb92062..89ac2ad 100644
--- src/lib/net.c
+++ src/lib/net.c
@@ -1336,31 +1336,33 @@
 	    return FALSE;
 	    }
 	if (startsWith("30", code) && isdigit(code[2])
 	    && ((code[2] >= '0' && code[2] <= '3') || code[2] == '7') && code[3] == 0)
 	    {
 	    redirect = TRUE;
 	    }
 	else if (sameString(code, "305"))
 	    {
 	    mustUseProxy = TRUE;
 	    }
 	else if (sameString(code, "407"))
 	    {
 	    mustUseProxyAuth = TRUE;
 	    }
-	else if (byteRangeUsed)
+	else if (byteRangeUsed 
+	    /* hack for Apache bug 2.2.20 and 2.2.21 2011-10-21 should be OK to remove after one year. */
+		&& !(sameString(code, "200") && byteRangeStart == 0 && byteRangeEnd == -1))  
 	    {
 	    if (!sameString(code, "206"))
 		{
 		if (sameString(code, "200"))
 		    warn("Byte-range request was ignored by server. ");
 		warn("Expected Partial Content 206. %s: %s %s", url, code, line);
 		return FALSE;
 		}
 	    }
 	else if (!sameString(code, "200"))
 	    {
 	    warn("Expected 200 %s: %s %s", url, code, line);
 	    return FALSE;
 	    }
 	line = buf;  /* restore it */
@@ -1399,31 +1401,33 @@
 		warn("Found Content-Range: %s. Expected bytes %lld-%s. Improper caching of 206 reponse byte-ranges?",
 		    headerVal, (long long) byteRangeStart, bre);
     		return FALSE;
 		}
 	    }
 	}
     }
 if (mustUseProxy ||  mustUseProxyAuth)
     {
     warn("%s: %s error. Use Proxy%s. Location = %s", url, 
 	mustUseProxy ? "" : " Authentication", 
 	mustUseProxy ? "305" : "407", 
 	proxyLocation ? proxyLocation : "not given");
     return FALSE;
     }
-if (byteRangeUsed && !foundContentRange)
+if (byteRangeUsed && !foundContentRange
+	    /* hack for Apache bug 2.2.20 and 2.2.21 2011-10-21 should be OK to remove after one year. */
+		&& !(byteRangeStart == 0 && byteRangeEnd == -1))  
     {
     char bre[256];
     safef(bre, sizeof bre, "%lld", (long long)byteRangeEnd);
     if (byteRangeEnd == -1)
 	bre[0] = 0;
     warn("Expected response header Content-Range: %lld-%s", (long long) byteRangeStart, bre);
     return FALSE;
     }
 
 return TRUE;
 }
 
 
 boolean netSkipHttpHeaderLinesHandlingRedirect(int sd, char *url, int *redirectedSd, char **redirectedUrl)
 /* Skip http headers lines, returning FALSE if there is a problem.  Generally called as