From: Stephen D. <sd...@us...> - 2005-12-30 11:26:51
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2780/nsd Modified Files: init.c op.c url2file.c urlspace.c Log Message: 2005-12-30 Stephen Deasey <sd...@us...> * include/ns.h: * nsd/init.c: * nsd/urlspace.c: * tests/url2file.test: Split the urlspace by key ID and remove the global lock. Remove unused Ns_ServerSpecific*() routines. Make NsUrlSpecificWalk() emit an entry for both inherit and noinherit data, identifying each with a keyword. Don't emit the server name, which is redundant, and separate the URL from the filter. (RFE: 1377113) Index: urlspace.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/urlspace.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** urlspace.c 2 Oct 2005 22:23:10 -0000 1.6 --- urlspace.c 30 Dec 2005 11:26:42 -0000 1.7 *************** *** 43,51 **** NS_RCSID("@(#) $Header$"); - /* - * Size of stack to keep track of server/method/url/... node path - */ ! #define STACK_SIZE 512 /* --- 43,49 ---- [...2245 lines suppressed...] - { - int i; - char *stack[STACK_SIZE]; - - memset(stack, 0, sizeof(stack)); - Ns_MutexLock(&lock); - #ifndef __URLSPACE_OPTIMIZE__ - for (i = 0; i < (&urlspace.byuse)->n; i++) { - Channel *channelPtr; - channelPtr = (Channel *) Ns_IndexEl(&urlspace.byuse, i); - #else - for (i = ((&urlspace.byname)->n - 1); i >= 0; i--) { - Channel *channelPtr; - channelPtr = (Channel *) Ns_IndexEl(&urlspace.byname, i); - #endif - WalkTrie(&channelPtr->trie, id, server, func, dsPtr, stack, channelPtr->filter); - } - Ns_MutexUnlock(&lock); - } --- 1744,1746 ---- Index: op.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/op.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** op.c 5 Dec 2005 08:40:23 -0000 1.6 --- op.c 30 Dec 2005 11:26:42 -0000 1.7 *************** *** 56,59 **** --- 56,60 ---- */ + static void WalkCallback(Tcl_DString *dsPtr, void *arg); static void FreeReq(void *arg); *************** *** 468,516 **** /* *---------------------------------------------------------------------- * ! * FreeReq -- ! * ! * URL space callback to delete a request structure. ! * * Results: ! * None. * * Side effects: ! * Depends on request delete procedure. * *---------------------------------------------------------------------- */ ! ! static void ! FreeReq(void *arg) { ! Req *reqPtr = (Req *) arg; ! ! if (--reqPtr->refcnt == 0) { ! if (reqPtr->delete != NULL) { ! (*reqPtr->delete) (reqPtr->arg); ! } ! ns_free(reqPtr); } } ! /* ! *---------------------------------------------------------------------- ! * ! * NsRequestArgProc -- ! * ! * Proc info routine to copy Tcl request proc. ! * ! * Results: ! * None. ! * ! * Side effects: ! * Will copy script to given dstring. ! * ! *---------------------------------------------------------------------- ! */ ! ! void ! NsTclRequestArgProc(Tcl_DString *dsPtr, void *arg) { Req *reqPtr = arg; --- 469,502 ---- /* *---------------------------------------------------------------------- + * NsGetRequestProcs -- * ! * Get a description of each registered request for the given ! * server. ! * * Results: ! * DString with info in Tcl list form. * * Side effects: ! * None. * *---------------------------------------------------------------------- */ ! ! void ! NsGetRequestProcs(Tcl_DString *dsPtr, CONST char *server) { ! NsServer *servPtr; ! ! servPtr = NsGetServer(server); ! if (servPtr == NULL) { ! return; } + Ns_MutexLock(&ulock); + NsUrlSpecificWalk(uid, servPtr->server, WalkCallback, dsPtr); + Ns_MutexUnlock(&ulock); } ! static void ! WalkCallback(Tcl_DString *dsPtr, void *arg) { Req *reqPtr = arg; *************** *** 519,549 **** } ! /* *---------------------------------------------------------------------- - * NsGetRequestProcs -- * ! * Returns information about registered requests/procs. ! * * Results: ! * DString with info as Tcl list. * * Side effects: ! * None. * *---------------------------------------------------------------------- */ ! ! void ! NsGetRequestProcs(Tcl_DString *dsPtr, CONST char *server) { ! NsServer *servPtr; ! ! servPtr = NsGetServer(server); ! if (servPtr == NULL) { ! return; } - Ns_MutexLock(&ulock); - NsUrlSpecificWalk(uid, servPtr->server, NsTclRequestArgProc, dsPtr); - Ns_MutexUnlock(&ulock); } --- 505,535 ---- } ! /* *---------------------------------------------------------------------- * ! * FreeReq -- ! * ! * URL space callback to delete a request structure. ! * * Results: ! * None. * * Side effects: ! * Depends on request delete procedure. * *---------------------------------------------------------------------- */ ! ! static void ! FreeReq(void *arg) { ! Req *reqPtr = (Req *) arg; ! ! if (--reqPtr->refcnt == 0) { ! if (reqPtr->delete != NULL) { ! (*reqPtr->delete) (reqPtr->arg); ! } ! ns_free(reqPtr); } } Index: init.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/init.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** init.c 30 Dec 2005 11:07:34 -0000 1.7 --- init.c 30 Dec 2005 11:26:42 -0000 1.8 *************** *** 80,84 **** NsInitSched(); NsInitTcl(); - NsInitUrlSpace(); NsInitRequests(); NsInitUrl2File(); --- 80,83 ---- Index: url2file.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/url2file.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** url2file.c 7 Nov 2005 03:19:05 -0000 1.1 --- url2file.c 30 Dec 2005 11:26:42 -0000 1.2 *************** *** 68,72 **** static Ns_Callback FreeMount; static void FreeUrl2File(void *arg); ! static void Url2FileProcInfo(Ns_DString *dsPtr, void *arg); /* --- 68,72 ---- static Ns_Callback FreeMount; static void FreeUrl2File(void *arg); ! static void WalkCallback(Ns_DString *dsPtr, void *arg); /* *************** *** 583,587 **** *---------------------------------------------------------------------- * ! * NsGetUrl2FileProcsProcs -- * * Append information about registered url2file procs to dstring. --- 583,587 ---- *---------------------------------------------------------------------- * ! * NsGetUrl2FileProcs -- * * Append information about registered url2file procs to dstring. *************** *** 600,609 **** { Ns_MutexLock(&ulock); ! NsUrlSpecificWalk(uid, server, Url2FileProcInfo, dsPtr); Ns_MutexUnlock(&ulock); } static void ! Url2FileProcInfo(Ns_DString *dsPtr, void *arg) { Url2File *u2fPtr = arg; --- 600,609 ---- { Ns_MutexLock(&ulock); ! NsUrlSpecificWalk(uid, server, WalkCallback, dsPtr); Ns_MutexUnlock(&ulock); } static void ! WalkCallback(Ns_DString *dsPtr, void *arg) { Url2File *u2fPtr = arg; |