Ralf and company,
I've been working with the EAPI patch for CovalentSSL, and discovered
two issues that will greatly improve EAPI compatibility for everyone!
One aspect, the exported symbols, can be remedied once and for all,
assuring some level of compatibility from version 1.3.15 forward :-)
The EAPI issue revolves around the symbols EAPI exports from the server.
The problem comes in that every symbol that your widely distributed EAPI
patch exports is bound by an ordinal number today. Every time Apache
adds symbols, these numbers must be bumped. Every time Apache exports
new symbols, we break binary compatibility between versions in Win32.
By patching in the EAPI symbols into ApacheCore.def -without- any
ordinal numbers, the EAPI symbols will always link by name. This means
anyone building an EAPI module for 1.3.15 can potentially load it on
older Apache builds, and will be able to load it on future builds as
well! I've also discovered the word DATA aught to follow the symbol
ap_global_ctx (for clarity, at least), and there are several more symbols
you export in the EAPI patch, ap_set_callback_and_alarm, sendwithtimeout,
recvwithtimeout, and everything exported by alloc.c/ap_mm.c.
In ap_alloc.h, I see the ap_make_shared_pool() isn't exported if EAPI_MM
isn't declared... odd? I'm assuming, for consistency's sake, that you
might want to have an exported ap_make_shared_pool() returning NULL if
EAPI_MM isn't enabled, or else drop the ap_ symbols all together? Assuming
you are exporting the entire package as stubs, and add ap_make_shared_pool()
returning NULL, I'm offering up the patch for 1.3.15's ApacheCore.def.
Raven/SSL is EAPI enabled (not EAPI_MM enabled at this time, though).
No matter which server an implementor builds, by using symbol names -without-
the ordinals, everyone can use EAPI or EAPI_MM enabled entry points if the
appropriate subset of features is compiled into the server. It won't
matter that the symbols shift around in the linkage table :-)
The other thought ... you may want to modify the src/ap/ap.dsp to include
the source files ./ap_mm.c , ./ap_ctx.c and ./ap_hook.c so folks who build
from the MSVC IDE enjoy a successful build, too.
Thanks for all your efforts with this package!
Yours,
Bill
--- ApacheCore.def 2000/10/08 05:23:15 1.27
+++ ApacheCore.def 2000/12/13 03:50:01
@@ -389,3 +389,66 @@
ap_stripprefix @380
ap_os_dso_load @381
ap_os_dso_error @382
+
+ ; EAPI extended symbols
+ ; note; no ID's, so these all bind by name rather than ordinal since
+ ; their ordinals would change with symbol changes in the distribution
+ ap_add_config_define
+ ap_global_ctx DATA
+ ap_ctx_new
+ ap_ctx_get
+ ap_ctx_overlay
+ ap_ctx_set
+ ap_hook_init
+ ap_hook_kill
+ ap_hook_configure
+ ap_hook_register_I
+ ap_hook_unregister_I
+ ap_hook_status
+ ap_hook_use
+ ap_hook_call
+ ap_set_callback_and_alarm
+ recvwithtimeout
+ sendwithtimeout
+ ap_aquire_pool
+ ap_make_shared_pool
+ ap_make_shared_sub_pool
+ ap_release_pool
+ ap_mm_useable
+ ap_MM_create
+ ap_MM_permission
+ ap_MM_destroy
+ ap_MM_lock
+ ap_MM_unlock
+ ap_MM_malloc
+ ap_MM_realloc
+ ap_MM_free
+ ap_MM_calloc
+ ap_MM_strdup
+ ap_MM_sizeof
+ ap_MM_maxsize
+ ap_MM_available
+ ap_MM_error
+ ap_mm_create
+ ap_mm_permission
+ ap_mm_destroy
+ ap_mm_lock
+ ap_mm_unlock
+ ap_mm_malloc
+ ap_mm_realloc
+ ap_mm_free
+ ap_mm_calloc
+ ap_mm_strdup
+ ap_mm_sizeof
+ ap_mm_maxsize
+ ap_mm_available
+ ap_mm_error
+ ap_mm_display_info
+ ap_mm_core_create
+ ap_mm_core_permission
+ ap_mm_core_delete
+ ap_mm_core_size
+ ap_mm_core_lock
+ ap_mm_core_unlock
+ ap_mm_core_align2page
+ ap_mm_core_align2word
+ ap_mm_lib_error_set
+ ap_mm_lib_error_get
+ ap_mm_lib_version
______________________________________________________________________
Apache Interface to OpenSSL (mod_ssl) www.modssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]