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