From 4268a9b51491524aeddade2810018668b2839be9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9gory=20Wisniewski?= <gregory@nexedi.com>
Date: Tue, 7 Jul 2009 14:49:56 +0000
Subject: [PATCH] Catch socket exception around fileno() to not crash if the
 socket is already closed (invalid descriptor found).

git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@818 71dcc9de-d417-0410-9af5-da40c76e7ee4
---
 neo/connector.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/neo/connector.py b/neo/connector.py
index 6d744751..6b32cc60 100644
--- a/neo/connector.py
+++ b/neo/connector.py
@@ -132,8 +132,12 @@ class SocketConnector:
     return self.socket.close()
 
   def __repr__(self):
-    result = '<%s at 0x%x fileno %i %s ' % (self.__class__.__name__, id(self),
-      self.socket.fileno(), self.socket.getsockname())
+    try:
+      fileno = str(self.socket.fileno())
+    except socket.error, (err, errmsg):
+      fileno = '?'
+    result = '<%s at 0x%x fileno %s %s>' % (self.__class__.__name__, id(self),
+      fileno, self.socket.getsockname())
     if self.is_closed is None:
       result += 'never opened'
     else:
-- 
2.30.9