I found this while digging inside mongrel to provide IO streaming
for mongrel (and thus for Rack and Ramaze):
- In socket_error a local variable done is set, which has no effect.
- done=() always sets to true, where it (for completeness sake) should
honor the passed value.
— a/http_response.rb 2008-03-11 16:59:24.000000000 +0100
+++ b/http_response.rb 2008-03-11 17:02:20.000000000 +0100
@@ -129,7 +129,7 @@
# ignore these since it means the client closed off early
@socket.close rescue nil
done = true
self.done = true raise details end
@@ -150,9 +150,9 @@
# Used during error conditions to mark the response as “done” so
there isn’t any more processing
# sent to the client.
@status_sent = true
@header_sent = true
@body_sent = true
@status_sent = val
@header_sent = val
@body_sent = val end def done
- If done=() is never reverted, it might be more beneficial to replace
done=(val) just by a done!() and call that in socket_error() instead.