if (!contentSize)
return; // XXX: bytesWanted asserts on zero-size ranges
- // XXX: entry->bytesWanted returns contentSize-1 if entry can accept data.
- // We have to add 1 to avoid suspending forever.
- const size_t bytesWanted = entry->bytesWanted(Range<size_t>(0, contentSize));
- const size_t spaceAvailable = bytesWanted > 0 ? (bytesWanted + 1) : 0;
+ const size_t spaceAvailable = entry->bytesWanted(Range<size_t>(0, contentSize));
if (spaceAvailable < contentSize ) {
// No or partial body data consuming
entry->deferProducer(call);
}
- // XXX: bytesWanted API does not allow us to write just one byte!
- if (!spaceAvailable && contentSize > 1) {
+ if (!spaceAvailable) {
debugs(11, 5, HERE << "NOT storing " << contentSize << " bytes of adapted " <<
"response body at offset " << adaptedBodySource->consumedSize());
return;
bool isEmpty () const {return true;}
- virtual size_t bytesWanted(Range<size_t> const aRange) const { assert (aRange.size()); return aRange.end - 1;}
+ virtual size_t bytesWanted(Range<size_t> const aRange) const { return aRange.end; }
void operator delete(void *address);
void complete() {}
assert(adaptedBodySource != NULL);
if (size_t contentSize = adaptedBodySource->buf().contentSize()) {
- // XXX: entry->bytesWanted returns contentSize-1 if entry can accept data.
- // We have to add 1 to avoid suspending forever.
- const size_t bytesWanted = storeEntry()->bytesWanted(Range<size_t>(0,contentSize));
- const size_t spaceAvailable = bytesWanted > 0 ? (bytesWanted + 1) : 0;
+ const size_t spaceAvailable = storeEntry()->bytesWanted(Range<size_t>(0,contentSize));
if (spaceAvailable < contentSize ) {
// No or partial body data consuming
storeEntry()->deferProducer(call);
}
- // XXX: bytesWanted API does not allow us to write just one byte!
- if (!spaceAvailable && contentSize > 1)
+ if (!spaceAvailable)
return;
if (spaceAvailable < contentSize )
size_t
StoreEntry::bytesWanted (Range<size_t> const aRange) const
{
- assert (aRange.size());
-
if (mem_obj == NULL)
- return aRange.end - 1;
+ return aRange.end;
#if URL_CHECKSUM_DEBUG
/* Always read *something* here - we haven't got the header yet */
if (EBIT_TEST(flags, ENTRY_FWD_HDR_WAIT))
- return aRange.end - 1;
+ return aRange.end;
if (!mem_obj->readAheadPolicyCanRead())
return 0;
- return mem_obj->mostBytesWanted(aRange.end - 1);
+ return mem_obj->mostBytesWanted(aRange.end);
}
bool