about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/rainbows/coolio/client.rb7
-rw-r--r--lib/rainbows/xepoll_thread_pool/client.rb2
-rw-r--r--lib/rainbows/xepoll_thread_spawn/client.rb2
3 files changed, 8 insertions, 3 deletions
diff --git a/lib/rainbows/coolio/client.rb b/lib/rainbows/coolio/client.rb
index 88fd1d4..8d48bbf 100644
--- a/lib/rainbows/coolio/client.rb
+++ b/lib/rainbows/coolio/client.rb
@@ -69,7 +69,12 @@ class Rainbows::Coolio::Client < Coolio::IO
   end
 
   def timeout?
-    nil == @deferred && @_write_buffer.empty? and close.nil?
+    if nil == @deferred && @_write_buffer.empty?
+      @_io.shutdown
+      true
+    else
+      false
+    end
   end
 
   # used for streaming sockets and pipes
diff --git a/lib/rainbows/xepoll_thread_pool/client.rb b/lib/rainbows/xepoll_thread_pool/client.rb
index 759202b..61b0b68 100644
--- a/lib/rainbows/xepoll_thread_pool/client.rb
+++ b/lib/rainbows/xepoll_thread_pool/client.rb
@@ -77,7 +77,7 @@ module Rainbows::XEpollThreadPool::Client
       LOCK.synchronize do
         KATO.delete_if { |client, time| time < ot and defer << client }
       end
-      defer.each { |io| io.closed? or io.close }
+      defer.each { |io| io.closed? or io.shutdown }
     end
     @@last_expire = now
   end
diff --git a/lib/rainbows/xepoll_thread_spawn/client.rb b/lib/rainbows/xepoll_thread_spawn/client.rb
index 1d3a280..6c07b92 100644
--- a/lib/rainbows/xepoll_thread_spawn/client.rb
+++ b/lib/rainbows/xepoll_thread_spawn/client.rb
@@ -33,7 +33,7 @@ module Rainbows::XEpollThreadSpawn::Client
   Rainbows.at_quit do
     clients = nil
     LOCK.synchronize { clients = KATO.keys; KATO.clear }
-    clients.each { |io| io.closed? or io.close }
+    clients.each { |io| io.closed? or io.shutdown }
   end
   @@last_expire = Time.now