URI: 
       tuse ndb directly for authdial - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 15423fd0524fae25926d807eddfe1336b2ec3be3
   DIR parent 1b3e768e01ef80ecdb758617e88ada3fb5a8226c
  HTML Author: rsc <devnull@localhost>
       Date:   Fri, 11 Feb 2005 19:46:29 +0000
       
       use ndb directly for authdial
       
       Diffstat:
         M src/libauthsrv/authdial.c           |      35 +++++++++++++++++++-------------
         M src/libauthsrv/mkfile               |       3 +--
       
       2 files changed, 22 insertions(+), 16 deletions(-)
       ---
   DIR diff --git a/src/libauthsrv/authdial.c b/src/libauthsrv/authdial.c
       t@@ -9,23 +9,30 @@ authdial(char *netroot, char *dom)
        {
                char *p;
                int rv;
       -        
       -        if(dom != nil){
       -                /* look up an auth server in an authentication domain */
       -                p = csgetvalue(netroot, "authdom", dom, "auth", nil);
       +        Ndb *db;
       +        char *file;
        
       -                /* if that didn't work, just try the IP domain */
       -                if(p == nil)
       -                        p = csgetvalue(netroot, "dom", dom, "auth", nil);
       -                if(p == nil){
       -                        werrstr("no auth server found for %s", dom);
       +        if(dom){
       +                file = unsharp("#9/ndb/local");
       +                db = ndbopen(file);
       +                if(db == nil){
       +                        fprint(2, "open %s: %r\n", file);
       +                        free(file);
                                return -1;
                        }
       -                rv = dial(netmkaddr(p, netroot, "ticket"), 0, 0, 0);
       -                free(p);
       +                free(file);
       +                p = ndbgetvalue(db, nil, "authdom", dom, "auth", nil);
       +                if(p == nil)
       +                        p = ndbgetvalue(db, nil, "dom", dom, "auth", nil);
       +                if(p == nil)
       +                        p = dom;
       +                rv = dial(netmkaddr(p, "tcp", "ticket"), 0, 0, 0);
       +                if(p != dom)
       +                        free(p);
                        return rv;
       -        } else {
       -                /* look for one relative to my machine */
       -                return dial(netmkaddr("$auth", netroot, "ticket"), 0, 0, 0);
                }
       +        p = getenv("auth");
       +        if(p == nil)
       +                p = "$auth";
       +        return dial(netmkaddr(p, "tcp", "ticket"), 0, 0, 0);
        }
   DIR diff --git a/src/libauthsrv/mkfile b/src/libauthsrv/mkfile
       t@@ -1,11 +1,10 @@
       -PLAN9=../..
        <$PLAN9/src/mkhdr
        
        LIB=libauthsrv.a
        OFILES=\
                _asgetticket.$O\
                _asrdresp.$O\
       -#        authdial.$O\
       +        authdial.$O\
                convA2M.$O\
                convM2A.$O\
                convM2PR.$O\