On Thu, October 26, 2006 10:50 am, Joe Orton wrote: > I'm not sure how that is relevant. The core output filter writes to the > socket directly - it can use non-blocking writes or whatever it likes to > do that. The cache must write to the output filter chain. How do you > propose to do non-blocking writes up the output filter chain?
The cache by design sits as close to the output filter as humanly possible. This means that cache can pass file buckets to the output filter, and it does. If ap_core_output_filter() is asked to write a file bucket to the network, and this would block, it instead sets aside the file bucket in a temporary brigade for sending later, and returns immediately. If this behaviour cannot be relied apon, in other words, if it is found that there are cases where the ap_core_output_filter() does block despite being handed file buckets, then the solution is to expose a function that, given a request_rec, will tell you whether the socket will block or not. I have a simpler solution for the bucket split in mod_cache that I am trying out as well, that will give us more control over the simultaneous write-to-file and write-to-network problem. Regards, Graham --
