[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Add error handling so that disconnecting from a console



ChangeSet 1.1327.2.10, 2005/04/27 15:42:44+01:00, mjw@xxxxxxxxxxxxxxxxxxx

        Add error handling so that disconnecting from a console
        producing fast output doesn't cause an error loop.
        
        Signed-off-by: Mike Wray <mike.wray@xxxxxx>



 console.py |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)


diff -Nru a/tools/python/xen/xend/server/console.py 
b/tools/python/xen/xend/server/console.py
--- a/tools/python/xen/xend/server/console.py   2005-05-13 16:04:28 -04:00
+++ b/tools/python/xen/xend/server/console.py   2005-05-13 16:04:28 -04:00
@@ -2,7 +2,8 @@
 
 import socket
 import threading
-
+from errno import EAGAIN, EINTR, EWOULDBLOCK
+    
 from xen.web import reactor, protocol
 
 from xen.lowlevel import xu
@@ -278,15 +279,20 @@
             self.lock.acquire()
             if self.closed():
                 return -1
-            if not self.conn:
-                return 0
-            while not self.obuf.empty():
+            writes = 0
+            while self.conn and (writes < 100) and (not self.obuf.empty()):
                 try:
+                    writes += 1
                     bytes = self.conn.write(self.obuf.peek())
                     if bytes > 0:
                         self.obuf.discard(bytes)
-                except socket.error:
-                    pass
+                except socket.error, err:
+                    if err.args[0] in (EWOULDBLOCK, EAGAIN, EINTR):
+                        pass
+                    else:
+                        self.disconnect()
+                        break
+                        
         finally:
             self.lock.release()
         return 0

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.