|
I wander if the issue with filter.flush() could be related to the fact that FilterDispatch will call it after the filter function has returned, even if the filter function had closed the filter. For simple examples this doesn't seem to matter, but maybe for Tramline the way it does things means that the flush after close causes a problem.
I can't see any harm in saying: if not filter.closed: filter.flush() Anyway, asking originator of bug report to see if it makes a difference or not. No response from the person who reported this yet, so am trying again.
In the mean time, I have seen myself in my own experiments that an output filter can be called an extra time after the filter has already been closed because of the mandatory flush that is occuring. This doesn't seem to happen in all cases though. The fact that a filter is called after the close has occured is definitely not good though as any state it has may be bogus and thus problems could occur. Thus reasonably confident that fix above would most likely solve the original problem. Latest update on this issue is that the change of not flushing if filter closed does not in itself fix the originally reported problem.
|
||||||||||||||||||||||||||||||||||||||||||||||
http://article.gmane.org/gmane.comp.apache.mod-python.devel/1341/match=martijn
http://article.gmane.org/gmane.comp.apache.mod-python.devel/1350/match=martijn
The offending package that might be used as a test case is called Tramline, which is available from:
http://faassen.n--tree.net/blog/view/weblog/2005/11/11/0
http://codespeak.net/svn/rr/tramline/trunk/
If it really is a requirement that automatic flushing needs to be able to be turned off, suggest that add a new configuration directive called "PythonFlushFilter" be implemented. The default if not defined would be "On", with it being able to be specified as "Off".
But then, the mailing list posts suggest that the workaround of disabling the flush may not work for all Apache versions.