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
