9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: "Eric Van Hensbergen" <ericvh@gmail.com>
To: "Fans of the OS Plan 9 from Bell Labs" <9fans@cse.psu.edu>
Cc: inferno-list@vitanuova.com
Subject: [9fans] devip connect error state
Date: Wed,  8 Aug 2007 15:59:16 -0500	[thread overview]
Message-ID: <a4e6962a0708081359n32d8bcc2ic9ba2af4c57a271a@mail.gmail.com> (raw)

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


             reply	other threads:[~2007-08-08 20:59 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-08 20:59 Eric Van Hensbergen [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a4e6962a0708081359n32d8bcc2ic9ba2af4c57a271a@mail.gmail.com \
    --to=ericvh@gmail.com \
    --cc=9fans@cse.psu.edu \
    --cc=inferno-list@vitanuova.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).