When a Content-Range header is received, make available the full triplet of <offset, length, fulllength>.
parent
a50944e078
commit
6b4fe9fadc
|
|
@ -107,6 +107,7 @@ HttpOpRequest::HttpOpRequest()
|
|||
mReplyBody(NULL),
|
||||
mReplyOffset(0),
|
||||
mReplyLength(0),
|
||||
mReplyFullLength(0),
|
||||
mReplyHeaders(NULL),
|
||||
mPolicyRetries(0),
|
||||
mPolicyRetryAt(HttpTime(0)),
|
||||
|
|
@ -154,6 +155,7 @@ HttpOpRequest::~HttpOpRequest()
|
|||
|
||||
mReplyOffset = 0;
|
||||
mReplyLength = 0;
|
||||
mReplyFullLength = 0;
|
||||
if (mReplyBody)
|
||||
{
|
||||
mReplyBody->release();
|
||||
|
|
@ -224,7 +226,7 @@ void HttpOpRequest::visitNotifier(HttpRequest * request)
|
|||
if (mReplyOffset || mReplyLength)
|
||||
{
|
||||
// Got an explicit offset/length in response
|
||||
response->setRange(mReplyOffset, mReplyLength);
|
||||
response->setRange(mReplyOffset, mReplyLength, mReplyFullLength);
|
||||
}
|
||||
|
||||
mUserHandler->onCompleted(static_cast<HttpHandle>(this), response);
|
||||
|
|
@ -362,6 +364,7 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)
|
|||
}
|
||||
mReplyOffset = 0;
|
||||
mReplyLength = 0;
|
||||
mReplyFullLength = 0;
|
||||
if (mReplyHeaders)
|
||||
{
|
||||
mReplyHeaders->release();
|
||||
|
|
@ -590,6 +593,7 @@ size_t HttpOpRequest::headerCallback(void * data, size_t size, size_t nmemb, voi
|
|||
// taking results from the last header stanza we receive.
|
||||
op->mReplyOffset = 0;
|
||||
op->mReplyLength = 0;
|
||||
op->mReplyFullLength = 0;
|
||||
op->mStatus = HttpStatus();
|
||||
}
|
||||
else if (op->mProcFlags & PF_SCAN_RANGE_HEADER)
|
||||
|
|
@ -613,6 +617,7 @@ size_t HttpOpRequest::headerCallback(void * data, size_t size, size_t nmemb, voi
|
|||
// Success, record the fragment position
|
||||
op->mReplyOffset = first;
|
||||
op->mReplyLength = last - first + 1;
|
||||
op->mReplyFullLength = length;
|
||||
}
|
||||
else if (-1 == status)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ public:
|
|||
BufferArray * mReplyBody;
|
||||
off_t mReplyOffset;
|
||||
size_t mReplyLength;
|
||||
size_t mReplyFullLength;
|
||||
HttpHeaders * mReplyHeaders;
|
||||
|
||||
// Policy data
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ HttpResponse::HttpResponse()
|
|||
: LLCoreInt::RefCounted(true),
|
||||
mReplyOffset(0U),
|
||||
mReplyLength(0U),
|
||||
mReplyFullLength(0U),
|
||||
mBufferArray(NULL),
|
||||
mHeaders(NULL)
|
||||
{}
|
||||
|
|
|
|||
|
|
@ -111,16 +111,18 @@ public:
|
|||
|
||||
/// If a 'Range:' header was used, these methods are involved
|
||||
/// in setting and returning data about the actual response.
|
||||
void getRange(unsigned int * offset, unsigned int * length) const
|
||||
void getRange(unsigned int * offset, unsigned int * length, unsigned int * full) const
|
||||
{
|
||||
*offset = mReplyOffset;
|
||||
*length = mReplyLength;
|
||||
*full = mReplyFullLength;
|
||||
}
|
||||
|
||||
void setRange(unsigned int offset, unsigned int length)
|
||||
void setRange(unsigned int offset, unsigned int length, unsigned int full_length)
|
||||
{
|
||||
mReplyOffset = offset;
|
||||
mReplyLength = length;
|
||||
mReplyFullLength = full_length;
|
||||
}
|
||||
|
||||
protected:
|
||||
|
|
@ -128,6 +130,7 @@ protected:
|
|||
HttpStatus mStatus;
|
||||
unsigned int mReplyOffset;
|
||||
unsigned int mReplyLength;
|
||||
unsigned int mReplyFullLength;
|
||||
BufferArray * mBufferArray;
|
||||
HttpHeaders * mHeaders;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1735,8 +1735,8 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe
|
|||
<< " status: " << status.toHex()
|
||||
<< " '" << status.toString() << "'"
|
||||
<< llendl;
|
||||
// unsigned int offset(0), length(0);
|
||||
// response->getRange(&offset, &length);
|
||||
// unsigned int offset(0), length(0), full_length(0);
|
||||
// response->getRange(&offset, &length, &full_length);
|
||||
// llwarns << "HTTP COMPLETE: " << mID << " handle: " << handle
|
||||
// << " status: " << status.toULong() << " '" << status.toString() << "'"
|
||||
// << " req offset: " << mRequestedOffset << " req length: " << mRequestedSize
|
||||
|
|
|
|||
Loading…
Reference in New Issue