summaryrefslogtreecommitdiff
path: root/methods/http.cc
diff options
context:
space:
mode:
Diffstat (limited to 'methods/http.cc')
-rw-r--r--methods/http.cc16
1 files changed, 13 insertions, 3 deletions
diff --git a/methods/http.cc b/methods/http.cc
index 9f01d15b3..9425145dd 100644
--- a/methods/http.cc
+++ b/methods/http.cc
@@ -267,6 +267,7 @@ bool CircleBuf::Write(string &Data)
OutP += LeftWrite();
return true;
}
+ /*}}}*/
// CircleBuf::Stats - Print out stats information /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -282,11 +283,12 @@ void CircleBuf::Stats()
clog << "Got " << InP << " in " << Diff << " at " << InP/Diff << endl;*/
}
/*}}}*/
-CircleBuf::~CircleBuf()
+CircleBuf::~CircleBuf() /*{{{*/
{
delete [] Buf;
delete Hash;
}
+ /*}}}*/
// UnwrapHTTPConnect - Does the HTTP CONNECT handshake /*{{{*/
// ---------------------------------------------------------------------
@@ -590,7 +592,15 @@ bool HttpServerState::RunData(RequestState &Req)
if (Req.JunkSize != 0)
In.Limit(Req.JunkSize);
else if (Req.DownloadSize != 0)
+ {
+ if (Req.MaximumSize != 0 && Req.DownloadSize > Req.MaximumSize)
+ {
+ Owner->SetFailReason("MaximumSizeExceeded");
+ return _error->Error(_("File is larger than expected (%llu > %llu). Mirror sync in progress?"),
+ Req.DownloadSize, Req.MaximumSize);
+ }
In.Limit(Req.DownloadSize);
+ }
else if (Persistent == false)
In.Limit(-1);
@@ -827,8 +837,8 @@ bool HttpServerState::Go(bool ToFile, RequestState &Req)
if (Req.MaximumSize > 0 && Req.File.IsOpen() && Req.File.Failed() == false && Req.File.Tell() > Req.MaximumSize)
{
Owner->SetFailReason("MaximumSizeExceeded");
- return _error->Error("Writing more data than expected (%llu > %llu)",
- Req.File.Tell(), Req.MaximumSize);
+ return _error->Error(_("File is larger than expected (%llu > %llu). Mirror sync in progress?"),
+ Req.File.Tell(), Req.MaximumSize);
}
// Handle commands from APT