You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by st...@apache.org on 2003/03/25 08:45:23 UTC
cvs commit: modperl-2.0/src/modules/perl mod_perl.c
stas 2003/03/24 23:45:23
Modified: src/modules/perl mod_perl.c
Log:
add macros to change the base server startup phases
Revision Changes Path
1.159 +15 -6 modperl-2.0/src/modules/perl/mod_perl.c
Index: mod_perl.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -r1.158 -r1.159
--- mod_perl.c 25 Mar 2003 04:49:05 -0000 1.158
+++ mod_perl.c 25 Mar 2003 07:45:22 -0000 1.159
@@ -1,5 +1,14 @@
#include "mod_perl.h"
+/* make sure that mod_perl won't try to start itself, while it's
+ * already starting. If the flag's value is 1 * it's still starting,
+ * when it's 2 it is running */
+static int MP_init_status = 0;
+
+#define MP_IS_NOT_RUNNING (MP_init_status == 0 ? 1 : 0)
+#define MP_IS_STARTING (MP_init_status == 1 ? 1 : 0)
+#define MP_IS_RUNNING (MP_init_status == 2 ? 1 : 0)
+
#ifndef USE_ITHREADS
static apr_status_t modperl_shutdown(void *data)
{
@@ -306,8 +315,6 @@
return OK;
}
-static int MP_init_done = 0;
-
void modperl_init(server_rec *base_server, apr_pool_t *p)
{
server_rec *s;
@@ -348,7 +355,7 @@
base_perl = modperl_startup(base_server, p);
- MP_init_done++;
+ MP_init_status = 2; /* only now mp has really started */
#ifdef USE_ITHREADS
modperl_interp_init(base_server, p, base_perl);
@@ -452,7 +459,7 @@
static apr_status_t modperl_sys_term(void *data)
{
- MP_init_done = 0;
+ MP_init_status = 0;
modperl_env_unload();
@@ -467,10 +474,12 @@
int modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog,
apr_pool_t *ptemp, server_rec *s)
{
- if (MP_init_done > 0) {
+ if (MP_IS_STARTING || MP_IS_RUNNING) {
return OK;
}
+ MP_init_status = 1; /* now starting */
+
apr_pool_create(&server_pool, pconf);
modperl_sys_init();
@@ -498,7 +507,7 @@
int modperl_is_running(void)
{
- return MP_init_done;
+ return MP_IS_RUNNING;
}
int modperl_hook_pre_config(apr_pool_t *p, apr_pool_t *plog,