diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-10-22 20:44:08 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-10-22 20:44:08 +0900 |
commit | 3075a3e1432158f0e5b29d035affb67e50b1226b (patch) | |
tree | 417d1c01354c72c301e1de25a261c4022b6508c2 | |
parent | 8aae57e6a3ea2d2367e9b4a82aa3af46c9f05720 (diff) | |
download | plum-3075a3e1432158f0e5b29d035affb67e50b1226b.tar.gz |
connection: fix 'ThreadError: deadlock; recursive locking': close BodyProxy after use
-rw-r--r-- | lib/plum/rack/connection.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/plum/rack/connection.rb b/lib/plum/rack/connection.rb index 23314bd..cae7080 100644 --- a/lib/plum/rack/connection.rb +++ b/lib/plum/rack/connection.rb @@ -55,11 +55,15 @@ module Plum r_headers, r_body = new_resp(@app.call(env)) if r_body.is_a?(::Rack::BodyProxy) - stream.respond(r_headers, end_stream: false) - r_body.each { |part| - stream.send_data(part, end_stream: false) - } - stream.send_data(nil) + begin + stream.respond(r_headers, end_stream: false) + r_body.each { |part| + stream.send_data(part, end_stream: false) + } + stream.send_data(nil) + ensure + r_body.close + end else stream.respond(r_headers, r_body) end |