Commit Diff


commit - 1b3e768e01ef80ecdb758617e88ada3fb5a8226c
commit + 15423fd0524fae25926d807eddfe1336b2ec3be3
blob - 5e608058582e8f6e28801f1ced753fab035a9fa9
blob + 5e305a547e3101d9a327735831c802541fe15591
--- src/libauthsrv/authdial.c
+++ src/libauthsrv/authdial.c
@@ -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);
 }
blob - a69cc942d7d92ca0f05592e66639b03956e446c2
blob + ddbefa5670e36d101278c8c972140a0de85c00c3
--- src/libauthsrv/mkfile
+++ src/libauthsrv/mkfile
@@ -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\