9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] devip connect error state
@ 2007-08-08 20:59 Eric Van Hensbergen
  2007-08-08 21:14 ` ron minnich
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Eric Van Hensbergen @ 2007-08-08 20:59 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs; +Cc: inferno-list

So -- in devip on Inferno hosted we have this bit of code: (connectctlmsg)

       if(c->state != Idle)
                error(Econinuse);
        c->state = Connecting;
        ...
        if(waserror()){
                qlock(&c->l);
                c->state = Connected;   /* sic */
                nexterror();
        }
        /* p = x->connect(c, cb->f, cb->nf); */
        so_connect(c->sfd, ip6w(c->raddr), c->rport);
        qlock(&c->l);
        poperror();

In native inferno (and Plan 9) devip we have this bit of code:
        if(c->state != 0)
                error(Econinuse);
        c->state = Connecting;
        ...
        if(waserror()){
                qlock(c);
                nexterror();
        }
        sleep(&c->cr, connected, c);
        qlock(c);
        poperror();

------------------

The result being if the connect fails, the state remains Connecting,
and subsequent writes of 'connect' commands fail because Econinuse.

In Plan 9/Inferno, this doesn't really matter much because if dial(2)
fails we close the fd to the ctl file.

Now in the Libra library OS stuff that I've been working on, we are
using a slight different (more socket-ish) semantic.  There's nothing
in the devip man pages that say that I can't issue new commands to the
ctl file after a failed command.

So, bug or feature?  At the very least it would seem a good idea to
set c->state to Hungup (and also change the c->state != 0 to a
c->state != Idle).  I have no idea why we set c->state to Connected in
Inferno hosted -- that just seems completely bonkers.

             -eric


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-08-09  8:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-08 20:59 [9fans] devip connect error state Eric Van Hensbergen
2007-08-08 21:14 ` ron minnich
2007-08-08 21:19 ` Charles Forsyth
2007-08-09  3:33   ` Eric Van Hensbergen
2007-08-09  6:47     ` Bruce Ellis
2007-08-09  8:38       ` Charles Forsyth
2007-08-08 21:48 ` Charles Forsyth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).