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.

Reply via email to