Fixing socket error in ns3 server
authorAlina Quereilhac <alina.quereilhac@inria.fr>
Fri, 12 Dec 2014 19:38:06 +0000 (20:38 +0100)
committerAlina Quereilhac <alina.quereilhac@inria.fr>
Fri, 12 Dec 2014 19:38:06 +0000 (20:38 +0100)
src/nepi/resources/ns3/ns3dceapplication.py
src/nepi/resources/ns3/ns3server.py
src/nepi/resources/ns3/ns3wrapper.py

index 886679e..d4ae7eb 100644 (file)
@@ -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:
index 30d5baf..c4bcc5a 100644 (file)
@@ -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...")
 
index c0f27be..d8fa96f 100644 (file)
@@ -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)