mirror of
https://github.com/openvswitch/ovs
synced 2025-09-05 00:35:33 +00:00
python: Add TCP/SSL probes for OVSDB python lib
stream_or_pstream_needs_probes always return 0. This causes TCP/SSL connection not be probed, and no reconnect when the connection is aborted Signed-off-by: Guoshuai Li <ligs@dtdream.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
@@ -39,16 +39,18 @@ vlog = ovs.vlog.Vlog("stream")
|
||||
|
||||
|
||||
def stream_or_pstream_needs_probes(name):
|
||||
""" 1 if the stream or pstream specified by 'name' needs periodic probes to
|
||||
verify connectivity. For [p]streams which need probes, it can take a long
|
||||
time to notice the connection was dropped. Returns 0 if probes aren't
|
||||
needed, and -1 if 'name' is invalid"""
|
||||
""" True if the stream or pstream specified by 'name' needs periodic probes
|
||||
to verify connectivity. For [p]streams which need probes, it can take a
|
||||
long time to notice the connection was dropped. Returns False if probes
|
||||
aren't needed, and None if 'name' is invalid"""
|
||||
|
||||
if PassiveStream.is_valid_name(name) or Stream.is_valid_name(name):
|
||||
# Only unix and punix are supported currently.
|
||||
return 0
|
||||
cls = Stream._find_method(name)
|
||||
if cls:
|
||||
return cls.needs_probes()
|
||||
elif PassiveStream.is_valid_name(name):
|
||||
return PassiveStream.needs_probes(name)
|
||||
else:
|
||||
return -1
|
||||
return None
|
||||
|
||||
|
||||
class Stream(object):
|
||||
@@ -524,6 +526,10 @@ class PassiveStream(object):
|
||||
connect = None # overlapped for read operation
|
||||
connect_pending = False
|
||||
|
||||
@staticmethod
|
||||
def needs_probes(name):
|
||||
return False if name.startswith("punix:") else True
|
||||
|
||||
@staticmethod
|
||||
def is_valid_name(name):
|
||||
"""Returns True if 'name' is a passive stream name in the form
|
||||
@@ -708,6 +714,10 @@ Passive %s connection methods:
|
||||
|
||||
|
||||
class UnixStream(Stream):
|
||||
@staticmethod
|
||||
def needs_probes():
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def _open(suffix, dscp):
|
||||
connect_path = suffix
|
||||
@@ -719,6 +729,10 @@ Stream.register_method("unix", UnixStream)
|
||||
|
||||
|
||||
class TCPStream(Stream):
|
||||
@staticmethod
|
||||
def needs_probes():
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def _open(suffix, dscp):
|
||||
error, sock = ovs.socket_util.inet_open_active(socket.SOCK_STREAM,
|
||||
@@ -732,6 +746,9 @@ Stream.register_method("tcp", TCPStream)
|
||||
|
||||
|
||||
class SSLStream(Stream):
|
||||
@staticmethod
|
||||
def needs_probes():
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def verify_cb(conn, cert, errnum, depth, ok):
|
||||
|
Reference in New Issue
Block a user