This patch returns the functionality we had in mp1:

use Apache::ServerUtil ();
my $cnt = Apache->server->start_cnt();
open my $fh, ">>/tmp/out" or die "$!";
print $fh "cnt: $cnt\n";
close $fh;

but I'm not sure at all if we want to keep those $Starting/$Restarting vars, based on previous discussions on httpd-dev those could be totally wrong since httpd.conf is reparsed too many times (including graceful and shutdown).

So i was thinking to just give a variable which will return the generation. So start_cnt() returns 1 when server starts, and 2 when it immediately restarts.

please post comments since I want to integrate it now. I need it at least for the tests.

Index: src/modules/perl/mod_perl.c
===================================================================
--- src/modules/perl/mod_perl.c (revision 109224)
+++ src/modules/perl/mod_perl.c (working copy)
@@ -280,8 +280,12 @@
             newSVpv(ap_server_root_relative(p, "lib/perl"), 0));
 #endif /* MP_COMPAT_1X */

+
+    /* things to be done only in the main server */
     if (!s->is_virtual) {
         modperl_handler_anon_init(aTHX_ p);
+
+        modperl_init_cnt_inc(s);
     }

     if (!modperl_config_apply_PerlRequire(s, scfg, perl, p)) {
Index: src/modules/perl/modperl_util.c
===================================================================
--- src/modules/perl/modperl_util.c     (revision 106739)
+++ src/modules/perl/modperl_util.c     (working copy)
@@ -797,3 +797,26 @@
     }

 }
+
+#define MP_INIT_KEY "mod_perl_init_cnt"
+
+void modperl_init_cnt_inc(server_rec *main_server)
+{
+    void *data;
+    int cnt = 1;
+    apr_pool_userdata_get(&data, MP_INIT_KEY, main_server->process->pool);
+    if (data) {
+        cnt = (int)data + 1;
+    }
+
+    apr_pool_userdata_set((const void *)cnt, MP_INIT_KEY,
+                          apr_pool_cleanup_null,
+                          main_server->process->pool);
+}
+
+int modperl_init_cnt(server_rec *main_server)
+{
+    void *data;
+    apr_pool_userdata_get(&data, MP_INIT_KEY, main_server->process->pool);
+    return data ? (int)data : 0;
+ }
Index: src/modules/perl/modperl_util.h
===================================================================
--- src/modules/perl/modperl_util.h     (revision 106739)
+++ src/modules/perl/modperl_util.h     (working copy)
@@ -139,4 +139,12 @@
         : (char *)apr_psprintf(p, "%s...",                               \
                                apr_pstrmemdup(p, str, MP_TRACE_STR_LEN))

+/* functions maintaining the amount of times mod_perl was restarted,
+ * e.g. on Apache start, it restarts itself, so the count will be
+ * first 1, and on on restart 2 */
+void modperl_init_cnt_inc(server_rec *main_server);
+int  modperl_init_cnt(server_rec *main_server);
+
+
+
 #endif /* MODPERL_UTIL_H */
Index: xs/maps/apache_functions.map
===================================================================
--- xs/maps/apache_functions.map        (revision 106739)
+++ xs/maps/apache_functions.map        (working copy)
@@ -157,6 +157,7 @@
 -ap_scan_script_header_err_brigade

 MODULE=Apache::ServerUtil   PACKAGE=Apache::ServerRec BOOT=1
+ int:DEFINE_start_cnt | | server_rec *:s
 ~ap_method_register
  int:DEFINE_method_register | | server_rec *:s, const char *:methname
 ~add_version_component
Index: xs/Apache/ServerUtil/Apache__ServerUtil.h
===================================================================
--- xs/Apache/ServerUtil/Apache__ServerUtil.h   (revision 106739)
+++ xs/Apache/ServerUtil/Apache__ServerUtil.h   (working copy)
@@ -13,7 +13,9 @@
  * limitations under the License.
  */

-#define mpxs_Apache__ServerRec_method_register(s, methname)    \
+#define mpxs_Apache__ServerRec_start_cnt modperl_init_cnt
+
+#define mpxs_Apache__ServerRec_method_register(s, methname)     \
     ap_method_register(s->process->pconf, methname);

 #define mpxs_Apache__ServerRec_add_version_component(s, component)    \

--
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to