fielding 98/12/11 21:26:05
Modified: src ApacheCore.def CHANGES
src/include ap_mmn.h http_config.h
src/main http_config.c
src/modules/standard mod_so.c
src/support httpd.exp
Log:
Added two new core API functions, ap_single_module_configure() and
ap_single_module_init(), which are now used by mod_so to correctly
initialize a module after loading. This fixes a problem with unusable
handlers, for instance mod_perl's perl-script handler was not found
when mod_perl was loaded as a DSO, and the same applied to other
similar modules. Bumped MMN and added function names to ApacheCore.def.
Submitted by: Ralf S. Engelschall
Reviewed by: Roy Fielding, Lars Eilebrecht
Revision Changes Path
1.3 +4 -1 apache-1.3/src/ApacheCore.def
Index: ApacheCore.def
===================================================================
RCS file: /home/cvs/apache-1.3/src/ApacheCore.def,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ApacheCore.def 1998/11/11 14:41:27 1.2
+++ ApacheCore.def 1998/12/12 05:26:00 1.3
@@ -317,5 +317,8 @@
so_module @310
top_module @311
ap_fnmatch @312
-
+ ap_method_number_of @313
+ ap_exists_config_define @314
+ ap_single_module_configure @315
+ ap_single_module_init @316
1.1170 +7 -0 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.1169
retrieving revision 1.1170
diff -u -r1.1169 -r1.1170
--- CHANGES 1998/12/12 03:54:16 1.1169
+++ CHANGES 1998/12/12 05:26:00 1.1170
@@ -1,5 +1,12 @@
Changes with Apache 1.3.4
+ *) Added two new core API functions, ap_single_module_configure() and
+ ap_single_module_init(), which are now used by mod_so to correctly
+ initialize a module after loading. This fixes a problem with unusable
+ handlers, for instance mod_perl's perl-script handler was not found
+ when mod_perl was loaded as a DSO, and the same applied to other
+ similar modules. [Ralf S. Engelschall]
+
*) PORT: Add defines for USE_FLOCK_SERIALIZED_ACCEPT and
SINGLE_LISTEN_UNSERIALIZED_ACCEPT to NetBSD/OpenBSD section
of ap_config.h to allow serialized accept for multiport listens.
1.13 +4 -2 apache-1.3/src/include/ap_mmn.h
Index: ap_mmn.h
===================================================================
RCS file: /home/cvs/apache-1.3/src/include/ap_mmn.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ap_mmn.h 1998/12/04 19:12:15 1.12
+++ ap_mmn.h 1998/12/12 05:26:02 1.13
@@ -188,12 +188,14 @@
* exit_generation to running_generation. Somewhere
* earlier vhostrec was added, but it's only safe to
use
* as of this rev. See scoreboard.h for
documentation.
+ * 19981211 - DSO changes -- added ap_single_module_configure()
+ * -- added ap_single_module_init()
*/
#ifndef MODULE_MAGIC_NUMBER_MAJOR
-#define MODULE_MAGIC_NUMBER_MAJOR 19981204
+#define MODULE_MAGIC_NUMBER_MAJOR 19981211
#endif
-#define MODULE_MAGIC_NUMBER_MINOR 1 /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */
#define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR /* backward
compat */
/* Useful for testing for features. */
1.97 +5 -0 apache-1.3/src/include/http_config.h
Index: http_config.h
===================================================================
RCS file: /home/cvs/apache-1.3/src/include/http_config.h,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -r1.96 -r1.97
--- http_config.h 1998/11/03 13:05:09 1.96
+++ http_config.h 1998/12/12 05:26:02 1.97
@@ -336,6 +336,11 @@
extern module *ap_preloaded_modules[];
extern API_VAR_EXPORT module **ap_loaded_modules;
+/* For mod_so.c... */
+
+void ap_single_module_configure(pool *p, server_rec *s, module *m);
+void ap_single_module_init(pool *p, server_rec *s, module *m);
+
/* For http_main.c... */
server_rec *ap_read_config(pool *conf_pool, pool *temp_pool, char
*config_name);
1.137 +17 -0 apache-1.3/src/main/http_config.c
Index: http_config.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/main/http_config.c,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -r1.136 -r1.137
--- http_config.c 1998/12/02 00:00:02 1.136
+++ http_config.c 1998/12/12 05:26:03 1.137
@@ -1476,6 +1476,23 @@
return s;
}
+void ap_single_module_configure(pool *p, server_rec *s, module *m)
+{
+ if (m->create_server_config)
+ ap_set_module_config(s->module_config, m,
+ (*m->create_server_config)(p, s));
+ if (m->create_dir_config)
+ ap_set_module_config(s->lookup_defaults, m,
+ (*m->create_dir_config)(p, NULL));
+}
+
+void ap_single_module_init(pool *p, server_rec *s, module *m)
+{
+ if (m->init)
+ (*m->init)(s, p);
+ build_method_shortcuts();
+ init_handlers(p);
+}
void ap_init_modules(pool *p, server_rec *s)
{
1.27 +5 -8 apache-1.3/src/modules/standard/mod_so.c
Index: mod_so.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_so.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- mod_so.c 1998/09/19 12:27:24 1.26
+++ mod_so.c 1998/12/12 05:26:04 1.27
@@ -125,6 +125,7 @@
*/
+#define CORE_PRIVATE
#include "httpd.h"
#include "http_config.h"
#include "http_log.h"
@@ -266,15 +267,11 @@
(void (*)(void*))unload_module, ap_null_cleanup);
/*
- * Finally we need to run the configuration functions
- * in new modules now.
+ * Finally we need to create the configuration for the
+ * module and initialize it
*/
- if (modp->create_server_config)
- ((void**)cmd->server->module_config)[modp->module_index] =
- (*modp->create_server_config)(cmd->pool, cmd->server);
- if (modp->create_dir_config)
- ((void**)cmd->server->lookup_defaults)[modp->module_index] =
- (*modp->create_dir_config)(cmd->pool, NULL);
+ ap_single_module_configure(cmd->pool, cmd->server, modp);
+ ap_single_module_init(cmd->pool, cmd->server, modp);
return NULL;
}
1.6 +4 -0 apache-1.3/src/support/httpd.exp
Index: httpd.exp
===================================================================
RCS file: /home/cvs/apache-1.3/src/support/httpd.exp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- httpd.exp 1998/09/01 20:21:14 1.5
+++ httpd.exp 1998/12/12 05:26:05 1.6
@@ -95,6 +95,7 @@
ap_escape_quotes
ap_escape_shell_cmd
ap_excess_requests_per_child
+ap_exists_config_define
ap_exists_scoreboard_image
ap_extended_status
ap_finalize_request_protocol
@@ -185,6 +186,7 @@
ap_md5digest
ap_meets_conditions
ap_merge_per_dir_configs
+ap_method_number_of
ap_month_snames
ap_no2slash
ap_note_auth_failure
@@ -300,6 +302,8 @@
ap_show_directives
ap_show_modules
ap_signal
+ap_single_module_configure
+ap_single_module_init
ap_slack
ap_snprintf
ap_soft_timeout