python/ovs/stream: Fix Stream.connect() retval for incomplete connection.
This code is a backport from the upstream OVS (commit dcb66da): If the loop condition in Stream.connect() was false, which is especially likely for TCP connections, then Stream.connect() would return None, which violates its documented behavior. This commit fixes the problem. Reported-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
dae4bc4dc3
commit
1150dc49c4
@ -161,15 +161,17 @@ class Stream(object):
|
||||
is complete, returns 0 if the connection was successful or a positive
|
||||
errno value if it failed. If the connection is still in progress,
|
||||
returns errno.EAGAIN."""
|
||||
last_state = -1 # Always differs from initial self.state
|
||||
while self.state != last_state:
|
||||
last_state = self.state
|
||||
if self.state == Stream.__S_CONNECTING:
|
||||
self.__scs_connecting()
|
||||
elif self.state == Stream.__S_CONNECTED:
|
||||
return 0
|
||||
elif self.state == Stream.__S_DISCONNECTED:
|
||||
return self.error
|
||||
|
||||
if self.state == Stream.__S_CONNECTING:
|
||||
self.__scs_connecting()
|
||||
|
||||
if self.state == Stream.__S_CONNECTING:
|
||||
return errno.EAGAIN
|
||||
elif self.state == Stream.__S_CONNECTED:
|
||||
return 0
|
||||
else:
|
||||
assert self.state == Stream.__S_DISCONNECTED
|
||||
return self.error
|
||||
|
||||
def recv(self, n):
|
||||
"""Tries to receive up to 'n' bytes from this stream. Returns a
|
||||
|
Loading…
x
Reference in New Issue
Block a user