summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <mvo@ubuntu.com>2015-05-22 15:40:18 +0200
committerMichael Vogt <mvo@ubuntu.com>2015-05-22 15:40:18 +0200
commit6291f60e86718697f261519a6818e1d5ee433216 (patch)
treeacdb96cf0cd99a7e5e2639a10c48c979c384f7cb
parentceafe8a6edc815df2923ba892894617829e9d3c2 (diff)
Rename "Size" in ServerState to TotalFileSize
The variable "Size" was misleading and caused bug #1445239. To avoid similar issues in the future, rename it to make the meaning more obvious. git-dch: ignore
-rw-r--r--methods/https.cc4
-rw-r--r--methods/server.cc20
-rw-r--r--methods/server.h14
3 files changed, 22 insertions, 16 deletions
diff --git a/methods/https.cc b/methods/https.cc
index 3a5981b58..12fc6c70f 100644
--- a/methods/https.cc
+++ b/methods/https.cc
@@ -55,10 +55,10 @@ HttpsMethod::parse_header(void *buffer, size_t size, size_t nmemb, void *userp)
{
if (me->Server->Result != 416 && me->Server->StartPos != 0)
;
- else if (me->Server->Result == 416 && me->Server->Size == me->File->FileSize())
+ else if (me->Server->Result == 416 && me->Server->TotalFileSize == me->File->FileSize())
{
me->Server->Result = 200;
- me->Server->StartPos = me->Server->Size;
+ me->Server->StartPos = me->Server->TotalFileSize;
// the actual size is not important for https as curl will deal with it
// by itself and e.g. doesn't bother us with transport-encoding…
me->Server->JunkSize = std::numeric_limits<unsigned long long>::max();
diff --git a/methods/server.cc b/methods/server.cc
index ba0a8864b..6c05700a5 100644
--- a/methods/server.cc
+++ b/methods/server.cc
@@ -54,7 +54,7 @@ ServerState::RunHeadersResult ServerState::RunHeaders(FileFd * const File,
Major = 0;
Minor = 0;
Result = 0;
- Size = 0;
+ TotalFileSize = 0;
JunkSize = 0;
StartPos = 0;
Encoding = Closes;
@@ -177,8 +177,8 @@ bool ServerState::HeaderLine(string Line)
// On partial content (206) the Content-Length less than the real
// size, so do not set it here but leave that to the Content-Range
// header instead
- if(Result != 206 && Size == 0)
- Size = DownloadSize;
+ if(Result != 206 && TotalFileSize == 0)
+ TotalFileSize = DownloadSize;
return true;
}
@@ -194,15 +194,15 @@ bool ServerState::HeaderLine(string Line)
HaveContent = true;
// §14.16 says 'byte-range-resp-spec' should be a '*' in case of 416
- if (Result == 416 && sscanf(Val.c_str(), "bytes */%llu",&Size) == 1)
+ if (Result == 416 && sscanf(Val.c_str(), "bytes */%llu",&TotalFileSize) == 1)
; // we got the expected filesize which is all we wanted
- else if (sscanf(Val.c_str(),"bytes %llu-%*u/%llu",&StartPos,&Size) != 2)
+ else if (sscanf(Val.c_str(),"bytes %llu-%*u/%llu",&StartPos,&TotalFileSize) != 2)
return _error->Error(_("The HTTP server sent an invalid Content-Range header"));
- if ((unsigned long long)StartPos > Size)
+ if ((unsigned long long)StartPos > TotalFileSize)
return _error->Error(_("This HTTP server has broken range support"));
// figure out what we will download
- DownloadSize = Size - StartPos;
+ DownloadSize = TotalFileSize - StartPos;
return true;
}
@@ -313,7 +313,7 @@ ServerMethod::DealWithHeaders(FetchResult &Res)
struct stat SBuf;
if (stat(Queue->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0)
{
- if ((unsigned long long)SBuf.st_size == Server->Size)
+ if ((unsigned long long)SBuf.st_size == Server->TotalFileSize)
{
// the file is completely downloaded, but was not moved
if (Server->HaveContent == true)
@@ -323,7 +323,7 @@ ServerMethod::DealWithHeaders(FetchResult &Res)
Server->RunData(&DevNull);
}
Server->HaveContent = false;
- Server->StartPos = Server->Size;
+ Server->StartPos = Server->TotalFileSize;
Server->Result = 200;
}
else if (unlink(Queue->DestFile.c_str()) == 0)
@@ -349,7 +349,7 @@ ServerMethod::DealWithHeaders(FetchResult &Res)
// This is some sort of 2xx 'data follows' reply
Res.LastModified = Server->Date;
- Res.Size = Server->Size;
+ Res.Size = Server->TotalFileSize;
// Open the file
delete File;
diff --git a/methods/server.h b/methods/server.h
index ed3cb456a..8c14282b6 100644
--- a/methods/server.h
+++ b/methods/server.h
@@ -34,10 +34,16 @@ struct ServerState
char Code[360];
// These are some statistics from the last parsed header lines
- unsigned long long Size; // total size of the usable content (aka: the file)
- unsigned long long DownloadSize; // size we actually download (can be smaller than Size if we have partial content)
- unsigned long long JunkSize; // size of junk content (aka: server error pages)
+
+ // total size of the usable content (aka: the file)
+ unsigned long long TotalFileSize;
+ // size we actually download (can be smaller than Size if we have partial content)
+ unsigned long long DownloadSize;
+ // size of junk content (aka: server error pages)
+ unsigned long long JunkSize;
+ // The start of the data (for partial content)
unsigned long long StartPos;
+
time_t Date;
bool HaveContent;
enum {Chunked,Stream,Closes} Encoding;
@@ -73,7 +79,7 @@ struct ServerState
RunHeadersResult RunHeaders(FileFd * const File, const std::string &Uri);
bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
- virtual void Reset() {Major = 0; Minor = 0; Result = 0; Code[0] = '\0'; Size = 0; JunkSize = 0;
+ virtual void Reset() {Major = 0; Minor = 0; Result = 0; Code[0] = '\0'; TotalFileSize = 0; JunkSize = 0;
StartPos = 0; Encoding = Closes; time(&Date); HaveContent = false;
State = Header; Persistent = false; Pipeline = true;};
virtual bool WriteResponse(std::string const &Data) = 0;