INN 2.4.4 or 2.5?
julien at trigofacile.com
Wed Apr 9 18:12:25 UTC 2008
> I guess the only PITA fix for 2.4 I would like to see is the assert fix
> William Konert mentioned, for just the reasons he described. And if it's
> a major effort to back port, then skip that, too.
All right. I have just seen that it is a patch which applies as-is to
innfeed/connection.c (the code is almost the same between STABLE and CURRENT).
It is from revision 7382 (July, 5th 2005) by Russ:
In all of the response handlers that idle the connection if there's nothing
left in the queue, don't idle if there are writes pending. The cases where
this could possibly trigger are obscure and involve the remote peer doing
evil things, but the rest of the code handles it correctly and we were still
seeing assertion failures, indicating that evil may be happening.
In issueStreamingCommands, make certain that there are no pending writes
before idling the connection.
Add the code to ihaveBodyDone that was already in commandWriteDone to idle
the connection if the queue is empty in case we'd had to defer the idle in
the response handler due to an unfinished write.
Whenever doSomeWrites is called with writes still pending, add a work
callback to do the write at the next opportunity. This should eliminate a
temporary connection deadlock state on flushing, where the response to the
IHAVE body arrived before we finished writing it. Before, doSomeWrites
would have failed to call issueQUIT because writes were still pending, and
then after the writes complete, there's no code to go back and issue it
until the read timeout expires.
I have just committed it. I hope it will solve most of the issues as for
such failed assertions. William will surely tell us :-)
> Perhaps we are close to a 2.5 release, maybe 2.5.0 would be a starting
> point just to get more people using it and reporting problems.
> Enhancements could be added later.
Sure. I also hope the next release (after 2.4.4) will be 2.5.0.
I do not give a date but it would be great if it came within the year.
« Les mathématiques peuvent être définies comme une science
dans laquelle on ne sait jamais de quoi on parle, ni si ce qu'on dit
est vrai. » (Bertrand Russell)
More information about the inn-workers