summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--methods/server.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/methods/server.cc b/methods/server.cc
index cac77e24c..5afe42eba 100644
--- a/methods/server.cc
+++ b/methods/server.cc
@@ -163,6 +163,9 @@ bool ServerState::HeaderLine(string Line)
if (stringcasecmp(Tag,"Content-Length:") == 0)
{
+ auto ContentLength = strtoull(Val.c_str(), NULL, 10);
+ if (ContentLength == 0)
+ return true;
if (Encoding == Closes)
Encoding = Stream;
HaveContent = true;
@@ -171,7 +174,7 @@ bool ServerState::HeaderLine(string Line)
if (Result == 416)
DownloadSizePtr = &JunkSize;
- *DownloadSizePtr = strtoull(Val.c_str(), NULL, 10);
+ *DownloadSizePtr = ContentLength;
if (*DownloadSizePtr >= std::numeric_limits<unsigned long long>::max())
return _error->Errno("HeaderLine", _("The HTTP server sent an invalid Content-Length header"));
else if (*DownloadSizePtr == 0)