> I think there's a simpler way to handle this. Here is my version. Will > you review it? Thanks.
Looks good and I tested it. Tested-by: Isaku Yamahata <[email protected]> thanks, > > --8<--------------------------cut here-------------------------->8-- > > From: Ben Pfaff <[email protected]> > Date: Wed, 21 Nov 2012 09:00:39 -0800 > Subject: [PATCH] python/ovs/stream: Fix Stream.connect() retval for > incomplete connection. > > 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 <[email protected]> > Signed-off-by: Ben Pfaff <[email protected]> > --- > python/ovs/stream.py | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/python/ovs/stream.py b/python/ovs/stream.py > index c4d243d..cbe7f42 100644 > --- a/python/ovs/stream.py > +++ b/python/ovs/stream.py > @@ -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 > -- > 1.7.10.4 > -- yamahata _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
