httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bojan Smojver <bo...@rexursive.com>
Subject Re: File buckets v. core_output_filter
Date Sun, 10 Aug 2003 02:44:59 GMT
Just wanted to ask if you guys need me to open up a bug in Bugzilla for
this?

Also, I did a bit more testing on the whole thing and my example from
the initial report, where I had 300 byte long file buckets, doesn't
actually produce problems - I just picked that number because I believed
that on AP_MIN_SENDFILE the _only_thing_ that was involved. In the real
module that I'm building, my file buckets were over 6 kB long mixed with
some of them that are a few tens of bytes long. So, it seems that the
buckets have to be a few kB long to affect the output adversely. Not
sure if that's related in some way to how the actual TCP packets are
handled or not, given they get cut off around 1500 mark on ethernet. I
also discovered that when longer and shorter buckets get mixed together,
that's when things get really funky.

What I was actually experimenting with was setting the AP_MIN_SENDFILE
to just under 6 kB and just over 6 kB and this was definitely triggering
the odd behaviour as long as sendfile functionality was used (i.e. the
buckets were over the limit). I even tried to disable OS sendfile
support, but that didn't seem to make any difference, so I'm inclined to
believe it is not an inherent OS problem (Red Hat Linux 9). It would be
interesting to see what other Unix flavours and Windows do with it.

Anyway, the mod_testfilebucket + the actual example file should be a
good enough starting point for testing in relation to this (the example
file is supposed to have Unix line endings, LF only - on Windows this
file might have an incorrect size). You might want to experiment with
different file bucket sizes, just to make sure that all the above
analysis isn't some kind of a fluke.

The reason I didn't attach the actual module that I'm building is
because it involves other things apart from pure bucket handling, like
scanning, using reentrant C Flex, which not all people have at this
point. But if that helps, it's not an issue - it is a GPL-ed piece of
software.

I have tried to follow the logic of the core_output_filter a bit, but I
have to say it would take me some time to figure the whole thing out -
it's not really obvious to me what happens.

-- 
Bojan


Mime
View raw message