summaryrefslogtreecommitdiff
path: root/lib/drb/drb.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/drb/drb.rb')
-rw-r--r--lib/drb/drb.rb11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb
index 829b9cb916..8919a946b9 100644
--- a/lib/drb/drb.rb
+++ b/lib/drb/drb.rb
@@ -1080,11 +1080,14 @@ module DRb
return succ, result
ensure
- @mutex.synchronize do
- if @pool.size > POOL_SIZE or ! succ
- conn.close if conn
+ if conn
+ if succ
+ @mutex.synchronize do
+ @pool.unshift(conn)
+ @pool.pop.close while @pool.size > POOL_SIZE
+ end
else
- @pool.unshift(conn)
+ conn.close
end
end
end