From: Alina Quereilhac <alina.quereilhac@inria.fr>
Date: Fri, 12 Dec 2014 19:38:06 +0000 (+0100)
Subject: Fixing socket error in ns3 server
X-Git-Tag: nepi-3.2.0~45
X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=aa88e26ae289dd86610141b6d9f9103b53494f4d;p=nepi.git

Fixing socket error in ns3 server
---

diff --git a/src/nepi/resources/ns3/ns3dceapplication.py b/src/nepi/resources/ns3/ns3dceapplication.py
index 886679e4..d4ae7eb1 100644
--- a/src/nepi/resources/ns3/ns3dceapplication.py
+++ b/src/nepi/resources/ns3/ns3dceapplication.py
@@ -198,9 +198,8 @@ class NS3BaseDceApplication(NS3BaseApplication):
             self.ec.schedule(self.reschedule_delay, self.start)
         else:
             is_app_running = self.simulation.invoke(self.uuid, "isAppRunning")
-            is_simu_finished = self.simulation.invoke(SIMULATOR_UUID, "isFinished")
 
-            if is_app_running or is_simu_finished:
+            if is_app_running or self.simulation.state > Resource.STARTED:
                 super(NS3BaseApplication, self).do_start()
                 self._start_time = self.simulation.start_time
             else:
diff --git a/src/nepi/resources/ns3/ns3server.py b/src/nepi/resources/ns3/ns3server.py
index 30d5baf4..c4bcc5ac 100644
--- a/src/nepi/resources/ns3/ns3server.py
+++ b/src/nepi/resources/ns3/ns3server.py
@@ -207,7 +207,7 @@ def run_server(socket_name, level = logging.INFO, ns_log = None,
 
         if not msg_type:
             # Ignore - connection lost
-            break
+            continue
 
         if msg_type == NS3WrapperMessage.SHUTDOWN:
            stop = True
@@ -223,7 +223,10 @@ def run_server(socket_name, level = logging.INFO, ns_log = None,
         try:
             send_reply(conn, reply)
         except socket.error:
-            break
+            import traceback
+            err = traceback.format_exc()
+            ns3_wrapper.logger.error(err) 
+            raise
         
     ns3_wrapper.logger.info("EXITING...")
 
diff --git a/src/nepi/resources/ns3/ns3wrapper.py b/src/nepi/resources/ns3/ns3wrapper.py
index c0f27beb..d8fa96fe 100644
--- a/src/nepi/resources/ns3/ns3wrapper.py
+++ b/src/nepi/resources/ns3/ns3wrapper.py
@@ -586,6 +586,9 @@ class NS3Wrapper(object):
         if now.IsZero():
             return False
 
+        if self.ns3.Simulator.IsFinished():
+            return False
+
         app = self.get_object(uuid)
         stop_time_value = self.ns3.TimeValue()
         app.GetAttribute("StopTime", stop_time_value)