api: allow specifying no timeout
[vpp.git] / src / vpp-api / python / vpp_papi / vpp_transport_socket.py
index a6340d8..c82b8c3 100644 (file)
@@ -8,7 +8,6 @@ import select
 import multiprocessing
 import queue
 import logging
-from . import vpp_papi
 
 logger = logging.getLogger('vpp_papi.transport')
 logger.addHandler(logging.NullHandler())
@@ -24,7 +23,7 @@ class VppTransport:
 
     def __init__(self, parent, read_timeout, server_address):
         self.connected = False
-        self.read_timeout = read_timeout if read_timeout > 0 else 1
+        self.read_timeout = read_timeout if read_timeout > 0 else None
         self.parent = parent
         self.server_address = server_address
         self.header = struct.Struct('>QII')
@@ -91,8 +90,8 @@ class VppTransport:
         try:
             self.socket.connect(self.server_address)
         except socket.error as msg:
-            logging.error("{} on socket {}".format(msg, self.server_address))
-            raise
+            logging.error("{} on socket {}".format(msg, self.server_address))
+            raise msg
 
         self.connected = True
 
@@ -141,8 +140,9 @@ class VppTransport:
         try:
             # Might fail, if VPP closes socket before packet makes it out,
             # or if there was a failure during connect().
+            # TODO: manually build message so that .disconnect releases server-side resources
             rv = self.parent.api.sockclnt_delete(index=self.socket_index)
-        except (IOError, vpp_papi.VPPApiError):
+        except (IOError, self.parent.VPPApiError):
             pass
         self.connected = False
         if self.socket is not None: