Forwarder must also forward EOF!!
authorClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Thu, 25 Aug 2011 14:34:00 +0000 (16:34 +0200)
committerClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Thu, 25 Aug 2011 14:34:00 +0000 (16:34 +0200)
(And server must detect it and re-listen)

src/nepi/util/server.py

index 762139a..fb4bab8 100644 (file)
@@ -221,6 +221,7 @@ class Server(object):
     def loop(self):
         while not self._stop:
             conn, addr = self._ctrl_sock.accept()
+            self.log_error("ACCEPTED CONNECTION: %s" % (addr,))
             conn.settimeout(5)
             while not self._stop:
                 try:
@@ -228,6 +229,10 @@ class Server(object):
                 except socket.timeout, e:
                     self.log_error()
                     break
+                
+                if not msg:
+                    self.log_error("CONNECTION LOST")
+                    break
                     
                 if msg == STOP_MSG:
                     self._stop = True
@@ -314,8 +319,16 @@ class Forwarder(object):
         print >>sys.stderr, "FORWARDER_READY."
         while not self._stop:
             data = self.read_data()
+            if not data:
+                # Connection to client lost
+                break
             self.send_to_server(data)
+            
             data = self.recv_from_server()
+            if not data:
+                # Connection to server lost
+                raise IOError, "Connection to server lost while "\
+                    "expecting response"
             self.write_data(data)
         self.disconnect()