OK, now I took out the Ns_Log statement I used to debug this. It still works.
diff -ur --exclude=CVS aolserver/nsd/nsd.h aolserver-vsfix/nsd/nsd.h --- aolserver/nsd/nsd.h Tue Oct 29 19:01:51 2002 +++ aolserver-vsfix/nsd/nsd.h Mon Jan 13 21:33:47 2003 @@ -110,6 +110,8 @@ typedef int bool; +struct NsServer; + struct _nsconf { char *argv0; char *nsd; @@ -131,6 +133,7 @@ */ Tcl_HashTable servertable; + struct NsServer *defaultserver; Tcl_DString servers; /* @@ -261,8 +264,6 @@ * The following structure maitains data for each instance of * a driver initialized with Ns_DriverInit. */ - -struct NsServer; typedef struct Driver { diff -ur --exclude=CVS aolserver/nsd/queue.c aolserver-vsfix/nsd/queue.c --- aolserver/nsd/queue.c Tue Oct 29 19:02:06 2002 +++ aolserver-vsfix/nsd/queue.c Mon Jan 13 22:23:42 2003 @@ -244,10 +244,9 @@ servPtr = Tcl_GetHashValue(hPtr); } } -fprintf(stderr, "%s %p\n", host, servPtr); } if (servPtr == NULL) { - return 0; + servPtr = nsconf.defaultserver; } /* diff -ur --exclude=CVS aolserver/nsd/server.c aolserver-vsfix/nsd/server.c --- aolserver/nsd/server.c Tue Oct 29 19:02:13 2002 +++ aolserver-vsfix/nsd/server.c Mon Jan 13 22:16:52 2003 @@ -204,6 +204,9 @@ servPtr = ns_calloc(1, sizeof(NsServer)); Tcl_SetHashValue(hPtr, servPtr); initServPtr = servPtr; + if (nsconf.defaultserver == NULL) { + nsconf.defaultserver = servPtr; + } /* * Create a new NsServer.