Moved HTTP-only offset calculation code to the general ServerStateData code so
that [converted-to-HTTP] FTP responses can use it. FTP code computes the range
offset on its own earlier, but we must REcalculate in case the response is
adapted into a response with a different (or no) content range.
#include "fd.h"
#include "err_detail_type.h"
#include "errorpage.h"
+#include "HttpHdrContRange.h"
#include "HttpReply.h"
#include "HttpRequest.h"
#include "Server.h"
{
Must(theFinalReply);
maybePurgeOthers();
+
+ // adaptation may overwrite old offset computed using the virgin response
+ const bool partial = theFinalReply->content_range &&
+ theFinalReply->sline.status() == Http::scPartialContent;
+ currentOffset = partial ? theFinalReply->content_range->spec.offset : 0;
}
HttpRequest *
Ctx ctx = ctx_enter(entry->mem_obj->url);
HttpReply *rep = finalReply();
- if (rep->sline.status == HTTP_PARTIAL_CONTENT &&
- rep->content_range)
- currentOffset = rep->content_range->spec.offset;
-
entry->timestampsSet();
/* Check if object is cacheable or not based on reply code */