You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by be...@hyperreal.org on 1999/07/11 18:54:10 UTC

cvs commit: apache-2.0/mpm/src/modules/standard mod_alias.c mod_setenvif.c mod_userdir.c

ben         99/07/11 09:54:10

  Modified:    mpm/src/ap ap_hooks.c
               mpm/src/include ap_hooks.h
               mpm/src/main http_core.c
               mpm/src/modules/standard mod_alias.c mod_setenvif.c
                        mod_userdir.c
  Log:
  Add non-topological ordering for hooks.
  
  Revision  Changes    Path
  1.2       +10 -0     apache-2.0/mpm/src/ap/ap_hooks.c
  
  Index: ap_hooks.c
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/mpm/src/ap/ap_hooks.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ap_hooks.c	1999/07/11 13:27:23	1.1
  +++ ap_hooks.c	1999/07/11 16:54:00	1.2
  @@ -13,6 +13,7 @@
       const char *szName;
       const char * const *aszPredecessors;
       const char * const *aszSuccessors;
  +    int nOrder;
       } TSortData;
   
   typedef struct tsort_
  @@ -23,11 +24,20 @@
       struct tsort_ *pNext;
       } TSort;
   
  +static int crude_order(const void *a_,const void *b_)
  +    {
  +    const TSortData *a=a_;
  +    const TSortData *b=b_;
  +
  +    return a->nOrder-b->nOrder;
  +    }
  +
   static TSort *prepare(pool *p,TSortData *pItems,int nItems)
       {
       TSort *pData=ap_palloc(p,nItems*sizeof *pData);
       int n;
   
  +    qsort(pItems,nItems,sizeof *pItems,crude_order);
       for(n=0 ; n < nItems ; ++n)
   	{
   	pData[n].nPredecessors=0;
  
  
  
  1.7       +13 -2     apache-2.0/mpm/src/include/ap_hooks.h
  
  Index: ap_hooks.h
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/mpm/src/include/ap_hooks.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ap_hooks.h	1999/07/11 16:42:23	1.6
  +++ ap_hooks.h	1999/07/11 16:54:02	1.7
  @@ -3,7 +3,8 @@
   
   #define DECLARE_HOOK(ret,name,args) \
   typedef ret HOOK_##name args; \
  -void ap_hook_##name(HOOK_##name *pf,const char * const *aszPre,const char * const *aszSucc); \
  +void ap_hook_##name(HOOK_##name *pf,const char * const *aszPre, \
  +		    const char * const *aszSucc,int nOrder); \
   ret ap_run_##name args; \
   typedef struct _LINK_##name \
       { \
  @@ -11,6 +12,7 @@
       const char *szName; \
       const char * const *aszPredecessors; \
       const char * const *aszSuccessors; \
  +    int nOrder; \
       } LINK_##name;
   
   #define HOOK_STRUCT(members) \
  @@ -20,7 +22,8 @@
       array_header *link_##name;
   
   #define IMPLEMENT_HOOK_BASE(ret,rv_decl,sv,rv,name,args,args2,run_all,term1,term2,rv_final) \
  -void ap_hook_##name(HOOK_##name *pf,const char * const *aszPre,const char * const *aszSucc) \
  +void ap_hook_##name(HOOK_##name *pf,const char * const *aszPre, \
  +		    const char * const *aszSucc,int nOrder) \
       { \
       LINK_##name *pHook; \
       if(!_hooks.link_##name) \
  @@ -32,6 +35,7 @@
       pHook->pFunc=pf; \
       pHook->aszPredecessors=aszPre; \
       pHook->aszSuccessors=aszSucc; \
  +    pHook->nOrder=nOrder; \
       pHook->szName=g_szCurrentHookName; \
       if(g_bDebugHooks) \
   	ap_show_hook(#name,aszPre,aszSucc); \
  @@ -63,6 +67,13 @@
   	IMPLEMENT_HOOK_BASE(ret,ret r_;,r_=,r_,name,args,args2,run_all,r_ != decline,r_ != ok,run_all ? ok : decline)
   #define IMPLEMENT_VOID_HOOK(name,args,args2,run_all) \
   	IMPLEMENT_HOOK_BASE(void,,,,name,args,args2,run_all,1,0,)
  +
  +     /* Hook orderings */
  +#define HOOK_REALLY_FIRST	(-10)
  +#define HOOK_FIRST		0
  +#define HOOK_MIDDLE		10
  +#define HOOK_LAST		20
  +#define HOOK_REALLY_LAST	30
   
   extern pool *g_pHookPool;
   extern int g_bDebugHooks;
  
  
  
  1.5       +1 -1      apache-2.0/mpm/src/main/http_core.c
  
  Index: http_core.c
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/mpm/src/main/http_core.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- http_core.c	1999/07/11 13:27:25	1.4
  +++ http_core.c	1999/07/11 16:54:04	1.5
  @@ -2631,7 +2631,7 @@
   
   static void register_hooks()
       {
  -    ap_hook_translate_name(core_translate,NULL,NULL);
  +    ap_hook_translate_name(core_translate,NULL,NULL,HOOK_REALLY_LAST);
       }
   
   API_VAR_EXPORT module core_module = {
  
  
  
  1.5       +1 -1      apache-2.0/mpm/src/modules/standard/mod_alias.c
  
  Index: mod_alias.c
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/mpm/src/modules/standard/mod_alias.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- mod_alias.c	1999/07/11 13:27:28	1.4
  +++ mod_alias.c	1999/07/11 16:54:08	1.5
  @@ -399,7 +399,7 @@
       {
       static const char * const aszPre[]={ "mod_userdir.c",NULL };
   
  -    ap_hook_translate_name(translate_alias_redir,aszPre,NULL);
  +    ap_hook_translate_name(translate_alias_redir,aszPre,NULL,HOOK_MIDDLE);
       }
   
   module MODULE_VAR_EXPORT alias_module =
  
  
  
  1.5       +1 -1      apache-2.0/mpm/src/modules/standard/mod_setenvif.c
  
  Index: mod_setenvif.c
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/mpm/src/modules/standard/mod_setenvif.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- mod_setenvif.c	1999/07/11 13:27:29	1.4
  +++ mod_setenvif.c	1999/07/11 16:54:08	1.5
  @@ -402,7 +402,7 @@
   
   static void register_hooks()
       {
  -    ap_hook_post_read_request(match_headers,NULL,NULL);
  +    ap_hook_post_read_request(match_headers,NULL,NULL,HOOK_MIDDLE);
       }
   
   module MODULE_VAR_EXPORT setenvif_module =
  
  
  
  1.5       +1 -1      apache-2.0/mpm/src/modules/standard/mod_userdir.c
  
  Index: mod_userdir.c
  ===================================================================
  RCS file: /export/home/cvs/apache-2.0/mpm/src/modules/standard/mod_userdir.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- mod_userdir.c	1999/07/11 13:27:29	1.4
  +++ mod_userdir.c	1999/07/11 16:54:08	1.5
  @@ -331,7 +331,7 @@
       {
       static const char * const aszSucc[]={ "mod_alias.c",NULL };
   
  -    ap_hook_translate_name(translate_userdir,NULL,aszSucc);
  +    ap_hook_translate_name(translate_userdir,NULL,aszSucc,HOOK_MIDDLE);
       }
   
   module userdir_module = {