[squid-users] Re: ecap adapted body limited to 64k

From: carteriii <web_s_at_tcarter.com>
Date: Sun, 25 Nov 2012 09:32:59 -0800 (PST)

First, thank you!

Second, I read the description of the dev mailing list and didn't think this
applied. Sorry.

Third, I created a simplified test case for myself and can see things
working with a data size larger than 64KB, so *I* obviously have more
debugging to do.

It would help me to ask about something you said here...

> Nope. It received your variable value saying you had 100K to send.
> The move notice is informing how much it received / copied out of your
> adaptor buffer.

I see your point, though the "variable" which I pass back from the adapter
is a libecap::Area which has the actual data as well as the size, rather
than separately passing back the size in one step and the actual data in a
separate step.

Having said that, I expected to find some sort of while() loop in squid
which acknowledges that an adapter says it has a certain amount of data and
then repeatedly calls abContent() and abContentShift() until that amount is
used up. I turned on "debug_options 93,9" but it's still not obvious to me.
I found the function:

XactionRep.cc: Adaptation::Ecap::XactionRep::moveAbContent() which seems to
do that basic test (c.size() == 0 or c.size() > 0), but there is not a
looping construct around it. I can see moveAbContent() being called from a
few places, such as

Adaptation::Ecap::XactionRep::noteAbContentDone()
Adaptation::Ecap::XactionRep::noteAbContentAvailable()
Adaptation::Ecap::XactionRep::noteMoreBodySpaceAvailable(RefCount<BodyPipe>
bp)

but I still expected to find a while() loop of some sort that repeatedly
called moveAbContent(). Perhaps I'm just wrong in thinking that I should
find a loop or recursive call.

Could/Would you please point me to the source file and/or function
responsible for repeatedly receiving/copying data out of the adapter buffer
until it has it all, particularly when > 64KB? Perhaps the logic resides in
the BodyPipe since that seemed to be the source of the 64KB limit?

I now believe the problem is on my side, but I could use a pointer to figure
out how/why. I should be able to figure it out from there if I can find
that part.

Thanks again.

--
View this message in context: http://squid-web-proxy-cache.1019090.n4.nabble.com/ecap-adapted-body-limited-to-64k-tp4657413p4657426.html
Sent from the Squid - Users mailing list archive at Nabble.com.
Received on Sun Nov 25 2012 - 17:33:01 MST

This archive was generated by hypermail 2.2.0 : Mon Nov 26 2012 - 12:00:03 MST