char *filepath;
char *dirpath;
int64_t restart_offset;
- int64_t restarted_offset;
char *proxy_host;
size_t list_width;
wordlist *cwd_message;
void processHeadResponse();
void processReplyBody();
void writeCommand(const char *buf);
+ void setCurrentOffset(int64_t offset) { currentOffset = offset; }
+ int64_t getCurrentOffset() const { return currentOffset; }
static CNCB ftpPasvCallback;
static PF ftpDataWrite;
assert(ftpState->restart_offset > 0);
if (code == 350) {
- ftpState->restarted_offset = ftpState->restart_offset;
+ ftpState->setCurrentOffset(ftpState->restart_offset);
ftpSendRetr(ftpState);
} else if (code > 0) {
debugs(9, 3, HERE << "REST not supported");
FtpStateData::hackShortcut(FTPSM * nextState)
{
/* Clear some unwanted state */
- restarted_offset = 0;
+ setCurrentOffset(0);
restart_offset = 0;
/* Save old error message & some state info */
/* set standard stuff */
HttpVersion version(1, 0);
- if (0 == restarted_offset) {
+ if (0 == getCurrentOffset()) {
/* Full reply */
reply->setHeaders(version, HTTP_OK, "Gatewaying",
mime_type, theSize, mdtm, -2);
- } else if (theSize < restarted_offset) {
+ } else if (theSize < getCurrentOffset()) {
/*
* DPW 2007-05-04
* offset should not be larger than theSize. We should
* send REST if we know the theSize and if it is less than theSize.
*/
debugs(0,DBG_CRITICAL,HERE << "Whoops! " <<
- " restarted_offset=" << restarted_offset <<
+ " current offset=" << getCurrentOffset() <<
", but theSize=" << theSize <<
". assuming full content response");
reply->setHeaders(version, HTTP_OK, "Gatewaying",
} else {
/* Partial reply */
HttpHdrRangeSpec range_spec;
- range_spec.offset = restarted_offset;
- range_spec.length = theSize - restarted_offset;
+ range_spec.offset = getCurrentOffset();
+ range_spec.length = theSize - getCurrentOffset();
reply->setHeaders(version, HTTP_PARTIAL_CONTENT, "Gatewaying",
- mime_type, theSize - restarted_offset, mdtm, -2);
+ mime_type, theSize - getCurrentOffset(), mdtm, -2);
httpHeaderAddContRange(&reply->header, range_spec, theSize);
}
* Authenticated requests can't be cached.
*/
e->release();
- } else if (EBIT_TEST(e->flags, ENTRY_CACHABLE) && !restarted_offset) {
+ } else if (EBIT_TEST(e->flags, ENTRY_CACHABLE) && !getCurrentOffset()) {
e->setPublicKey();
} else {
e->release();