Fixes to downloader range requests, improvements to input bufferFrame code
This commit is contained in:
parent
393fa9e403
commit
d097273859
2 changed files with 25 additions and 7 deletions
|
@ -270,8 +270,17 @@ namespace HTTP{
|
|||
}else{
|
||||
sprintf(tmp, "bytes=%zu-%zu", byteStart, byteEnd - 1);
|
||||
}
|
||||
extraHeaders.erase("Range");
|
||||
setHeader("Range", tmp);
|
||||
return getNonBlocking(link, 6);
|
||||
if (!canRequest(link)){return false;}
|
||||
nbLink = link;
|
||||
nbMaxRecursiveDepth = 6;
|
||||
nbLoop = retryCount + 1; // max 5 attempts
|
||||
isComplete = false;
|
||||
doRequest(nbLink);
|
||||
nbReqTime = Util::bootSecs();
|
||||
nbLastOff = getSocket().dataDown();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Downloader::getRange(const HTTP::URL &link, size_t byteStart, size_t byteEnd, Util::DataCallback &cb){
|
||||
|
|
|
@ -1526,8 +1526,16 @@ namespace Mist{
|
|||
size_t dataLen;
|
||||
thisPacket.getString("data", data, dataLen);
|
||||
if (dataLen != parts.getSize(partNo)){
|
||||
if (partNo && dataLen == parts.getSize(partNo-1)){
|
||||
FAIL_MSG("Part size for part %zu (%" PRIu64 "ms) matches part before it, instead. Aborting page load!", partNo, thisTime);
|
||||
break;
|
||||
}else if (dataLen == parts.getSize(partNo+1)){
|
||||
FAIL_MSG("Part size for part %zu (%" PRIu64 "ms) matches part after it, instead. Aborting page load!", partNo, thisTime);
|
||||
break;
|
||||
}else{
|
||||
INFO_MSG("Part %zu (@%" PRIu64 ") size mismatch: %zu (actual) != %zu (expected)", partNo, thisTime, dataLen, parts.getSize(partNo));
|
||||
}
|
||||
}
|
||||
++partNo;
|
||||
HIGH_MSG("Buffering VoD packet (%zuB) @%" PRIu64 " ms on track %zu with offset %" PRIu64, dataLen, thisTime, idx, thisPacket.getInt("offset"));
|
||||
bufferNext(thisTime, thisPacket.getInt("offset"), idx, data, dataLen,
|
||||
|
@ -1559,15 +1567,16 @@ namespace Mist{
|
|||
bufferFinalize(idx, page);
|
||||
bufferTimer = Util::bootMS() - bufferTimer;
|
||||
if (packCounter != tPages.getInt("parts", pageIdx)){
|
||||
FAIL_MSG("Track %zu, page %" PRIu32 " (%" PRIu64 " - %" PRIu64 " ms) NOT FULLY buffered in %" PRIu64 "ms",
|
||||
idx, pageNumber, tPages.getInt("firsttime", pageIdx), thisTime, bufferTimer);
|
||||
FAIL_MSG("Track %zu, page %" PRIu32 " (" PRETTY_PRINT_MSTIME " - " PRETTY_PRINT_MSTIME ") NOT FULLY buffered in %" PRIu64 "ms - erasing for later retry",
|
||||
idx, pageNumber, PRETTY_ARG_MSTIME(tPages.getInt("firsttime", pageIdx)), PRETTY_ARG_MSTIME(thisTime), bufferTimer);
|
||||
INFO_MSG(" (%" PRIu32 "/%" PRIu64 " parts, %" PRIu64 " bytes)", packCounter,
|
||||
tPages.getInt("parts", pageIdx), byteCounter);
|
||||
pageCounter[idx][pageNumber] = Util::bootSecs();
|
||||
pageCounter[idx].erase(pageNumber);
|
||||
bufferRemove(idx, pageNumber);
|
||||
return false;
|
||||
}else{
|
||||
INFO_MSG("Track %zu, page %" PRIu32 " (%" PRIu64 " - %" PRIu64 " ms) buffered in %" PRIu64 "ms",
|
||||
idx, pageNumber, tPages.getInt("firsttime", pageIdx), thisTime, bufferTimer);
|
||||
INFO_MSG("Track %zu, page %" PRIu32 " (" PRETTY_PRINT_MSTIME " - " PRETTY_PRINT_MSTIME ") buffered in %" PRIu64 "ms",
|
||||
idx, pageNumber, PRETTY_ARG_MSTIME(tPages.getInt("firsttime", pageIdx)), PRETTY_ARG_MSTIME(thisTime), bufferTimer);
|
||||
INFO_MSG(" (%" PRIu32 "/%" PRIu64 " parts, %" PRIu64 " bytes)", packCounter,
|
||||
tPages.getInt("parts", pageIdx), byteCounter);
|
||||
pageCounter[idx][pageNumber] = Util::bootSecs();
|
||||
|
|
Loading…
Add table
Reference in a new issue