OSDN Git Service

Thread.abort_on_exception = false
authorbeatles <beatles@b8c68f68-1e22-0410-b08e-880e1f8202b4>
Sat, 16 Feb 2008 08:24:32 +0000 (08:24 +0000)
committerbeatles <beatles@b8c68f68-1e22-0410-b08e-880e1f8202b4>
Sat, 16 Feb 2008 08:24:32 +0000 (08:24 +0000)
changelog
shogi-server

index c19a1e6..65eb2ce 100644 (file)
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+2008-02-16 Daigo Moriwaki <daigo at debian dot org>
+
+       * [shogi-server]
+         - Thread.abort_on_exception is now false, meaning that 
+           a thread's abort does not affect the others. 
+
 2008-02-14 Daigo Moriwaki <daigo at debian dot org>
 
        * [shogi-server]
index e753b4c..00a7bad 100755 (executable)
@@ -44,6 +44,7 @@ class TCPSocket
   def gets_safe(t = nil)
     if (t && t > 0)
       begin
+        return :exception if closed?
         timeout(t) do
           return self.gets
         end
@@ -55,6 +56,7 @@ class TCPSocket
       end
     else
       begin
+        return nil if closed?
         return self.gets
       rescue
         return nil
@@ -556,7 +558,7 @@ class Player < BasicPlayer
       begin
         $mutex.lock
 
-        if (@writer_thread == nil || @writer_thread.status == false)
+        if (@writer_thread == nil || !@writer_thread.status)
           # The writer_thread has been killed because of socket errors.
           return
         end
@@ -2296,7 +2298,7 @@ if ($0 == __FILE__)
   STDOUT.sync = true
   STDERR.sync = true
   TCPSocket.do_not_reverse_lookup = true
-  Thread.abort_on_exception = true
+  Thread.abort_on_exception = false
 
   LEAGUE = ShogiServer::League::new
   main