This fixes the following exception. When Stream.__scs_connecting doesn't change self.state, Stream.connect() returns None as an implicit return value. Then, the following exception is raised. I guess this case doesn't happen in unix socket case, but does in TCP socket case.
> File "ovs/jsonrpc.py", line 306, in transact_block > error = self.send(request) > File "ovs/jsonrpc.py", line 240, in send > self.run() > File "ovs/jsonrpc.py", line 200, in run > retval = self.stream.send(self.output) > File "ovs/stream.py", line 213, in send > return -retval > TypeError: bad operand type for unary -: 'NoneType' Signed-off-by: Isaku Yamahata <[email protected]> --- python/ovs/stream.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/python/ovs/stream.py b/python/ovs/stream.py index c4d243d..b4f5ba6 100644 --- a/python/ovs/stream.py +++ b/python/ovs/stream.py @@ -152,9 +152,10 @@ class Stream(object): assert retval != errno.EINPROGRESS if retval == 0: self.state = Stream.__S_CONNECTED - elif retval != errno.EAGAIN: - self.state = Stream.__S_DISCONNECTED + else: self.error = retval + if retval != errno.EAGAIN: + self.state = Stream.__S_DISCONNECTED def connect(self): """Tries to complete the connection on this stream. If the connection @@ -166,6 +167,11 @@ class Stream(object): last_state = self.state if self.state == Stream.__S_CONNECTING: self.__scs_connecting() + if self.state == Stream.__S_CONNECTING: + # try again + assert self.error == errno.EAGAIN + last_state = -1 + assert self.state != last_state elif self.state == Stream.__S_CONNECTED: return 0 elif self.state == Stream.__S_DISCONNECTED: -- 1.7.10.4 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
