diff --git a/lib/aethyr/core/connection/login.rb b/lib/aethyr/core/connection/login.rb index 6d9b73d11a503a3444212bbf799588d7b84d7aff..02a04c4ba60b85e006287adee52ad2999971491d 100644 --- a/lib/aethyr/core/connection/login.rb +++ b/lib/aethyr/core/connection/login.rb @@ -9,6 +9,7 @@ module Login #Get input from io connection and process it def receive_data + return false if closed? data = @display.recv return false if data.nil? return false if data == '' diff --git a/lib/aethyr/core/connection/server.rb b/lib/aethyr/core/connection/server.rb index cbf1b6b38c8673d4f7706a62b536a8c7d2f31629..e0e24514080adabd42669725b49b2f524b5a307d 100644 --- a/lib/aethyr/core/connection/server.rb +++ b/lib/aethyr/core/connection/server.rb @@ -67,16 +67,11 @@ module Aethyr end players.each do |player| - begin - player.receive_data - rescue Exception => e - log "Closing connection for #{player}" - begin - player.socket.close - rescue - end + if player.closed? + log "Player #{player} has closed connection, removing from server queue" players.delete(player) - log e.message + "\n" + e.backtrace.join("\n") unless player.closed? + else + player.receive_data end end