[ovs-dev] [PATCH] vconn: Fix vconn_get_status() return value when connection in progress.

Ben Pfaff blp at nicira.com
Sat Mar 1 02:15:32 UTC 2014


Thanks for the review.  I applied this to master.

On Fri, Feb 28, 2014 at 05:18:05PM -0800, Alex Wang wrote:
> Looks good to me,
> 
> I had trouble connecting to controller, this patch solves the problem,
> 
> 
> 
> On Fri, Feb 28, 2014 at 4:21 PM, Ben Pfaff <blp at nicira.com> wrote:
> 
> > When a connection takes a few rounds of the state machine to complete,
> > 'error' gets filled with EAGAIN until that completes.  This didn't match
> > the vconn_get_status() documentation, which says that it only returns a
> > positive errno value if there was an error.  One could fix the problem
> > by updating the documentation (and the callers) or by updating the
> > implementation.  I decided that the latter was the way to go because
> > the distinction between the TCP connection being in progress or complete
> > isn't visible to the client; what is visible to the client is the OpenFlow
> > negotiation being complete.
> >
> > This problem is difficult to find in the unit tests because TCP connections
> > to localhost complete immediately.
> >
> > Bug introduced by commit accaecc419cc57d (rconn: Discover errors in
> > rconn_run() even if rconn_recv() is never called.)
> >
> > Reported-by: Anuprem Chalvadi <achalvadi at vmware.com>
> > Signed-off-by: Ben Pfaff <blp at nicira.com>
> > ---
> >  AUTHORS     |    1 +
> >  lib/vconn.c |    2 +-
> >  2 files changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/AUTHORS b/AUTHORS
> > index d8f13ba..34e53c3 100644
> > --- a/AUTHORS
> > +++ b/AUTHORS
> > @@ -144,6 +144,7 @@ Andr? Ru?               andre.russ at hybris.com
> >  Andreas Beckmann        debian at abeckmann.de
> >  Andrei Andone           andrei.andone at softvision.ro
> >  Anton Matsiuk           anton.matsiuk at gmail.com
> > +Anuprem Chalvadi        achalvadi at vmware.com
> >  Atzm Watanabe           atzm at stratosphere.co.jp
> >  Bastian Blank           waldi at debian.org
> >  Ben Basler              bbasler at nicira.com
> > diff --git a/lib/vconn.c b/lib/vconn.c
> > index c1485f0..d6d239f 100644
> > --- a/lib/vconn.c
> > +++ b/lib/vconn.c
> > @@ -299,7 +299,7 @@ vconn_run_wait(struct vconn *vconn)
> >  int
> >  vconn_get_status(const struct vconn *vconn)
> >  {
> > -    return vconn->error;
> > +    return vconn->error == EAGAIN ? 0 : vconn->error;
> >  }
> >
> >  int
> > --
> > 1.7.10.4
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
> >


More information about the dev mailing list