Hey Rocky, watch me pull a rabbit out of my hat!
Again?
Yep, I've got this patch again. I think it's OK now; the bad behavior I
noticed earlier seems to have come from another bug. Also, I moved the
defaultserver element in the nsconf struct to the bottom, to make sure it
wasn't goofing up memory somewhere. So here goes:
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 22:44:59 2003
@@ -110,6 +110,8 @@
typedef int bool;
+struct NsServer;
+
struct _nsconf {
char *argv0;
char *nsd;
@@ -177,6 +179,8 @@
char *version;
} tcl;
+ struct NsServer *defaultserver;
+
};
extern struct _nsconf nsconf;
@@ -261,8 +265,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 23:12:03 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:44:59 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.