X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fnepi%2Fresources%2Fns3%2Fns3server.py;h=e8a6f7d2e5a2dc0840255d3d3e139c2049be0f3e;hb=e55924b6886bd7382a28e1ae235c4810f852e163;hp=43e0d5f5dd945c1dca03e42f3cc157aeee14e228;hpb=9253c552499af84f3b7a967f21f795e9575dda7e;p=nepi.git diff --git a/src/nepi/resources/ns3/ns3server.py b/src/nepi/resources/ns3/ns3server.py index 43e0d5f5..e8a6f7d2 100644 --- a/src/nepi/resources/ns3/ns3server.py +++ b/src/nepi/resources/ns3/ns3server.py @@ -3,9 +3,8 @@ # Copyright (C) 2014 INRIA # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation; # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -98,11 +97,17 @@ def handle_message(ns3_wrapper, msg_type, args, kwargs): return "FLUSHED" -def create_socket(socket_name): +def open_socket(socket_name): sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) sock.bind(socket_name) return sock +def close_socket(sock): + try: + sock.close() + except: + pass + def recv_msg(conn): msg = [] chunk = '' @@ -189,7 +194,7 @@ def run_server(socket_name, level = logging.INFO, ns_log = None, ns3_wrapper.logger.info("STARTING...") # create unix socket to receive instructions - sock = create_socket(socket_name) + sock = open_socket(socket_name) sock.listen(0) # wait for messages to arrive and process them @@ -197,16 +202,18 @@ def run_server(socket_name, level = logging.INFO, ns_log = None, while not stop: conn, addr = sock.accept() - conn.settimeout(5) + conn.settimeout(30) try: (msg_type, args, kwargs) = recv_msg(conn) except socket.timeout, e: # Ingore time-out + close_socket(conn) continue if not msg_type: # Ignore - connection lost + close_socket(conn) continue if msg_type == NS3WrapperMessage.SHUTDOWN: @@ -218,6 +225,7 @@ def run_server(socket_name, level = logging.INFO, ns_log = None, import traceback err = traceback.format_exc() ns3_wrapper.logger.error(err) + close_socket(conn) raise try: @@ -226,12 +234,12 @@ def run_server(socket_name, level = logging.INFO, ns_log = None, import traceback err = traceback.format_exc() ns3_wrapper.logger.error(err) + close_socket(conn) raise - - try: - conn.close() - except: - pass + + close_socket(conn) + + close_socket(sock) ns3_wrapper.logger.info("EXITING...")