OSDN Git Service

[shogi-server] Added shogi_server/compatible.rb, which implements compatible
[shogi-server/shogi-server.git] / shogi-server
index 3511c65..d79f165 100755 (executable)
@@ -420,7 +420,10 @@ def main
       client.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true)
         # Keepalive time can be set by /proc/sys/net/ipv4/tcp_keepalive_time
       player, login = login_loop(client) # loop
-      next unless player
+      unless player
+        log_error("Detected a timed out login attempt")
+        next
+      end
 
       log_message(sprintf("user %s login", player.name))
       login.process
@@ -431,12 +434,13 @@ def main
         if (player.game)
           player.game.kill(player)
         end
-        player.finish # socket has been closed
+        player.finish
         $league.delete(player)
         log_message(sprintf("user %s logout", player.name))
       ensure
         $mutex.unlock
       end
+      player.wait_write_thread_finish(1000) # milliseconds
     rescue Exception => ex
       log_error("server.start: #{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}")
     end