diff options
author | William A. Rowe Jr <wrowe@apache.org> | 2009-05-05 06:26:24 +0000 |
---|---|---|
committer | William A. Rowe Jr <wrowe@apache.org> | 2009-05-05 06:26:24 +0000 |
commit | 0fe6d791a5f99e203e2e6ef16b90e64debe41543 (patch) | |
tree | d371d9ec3236d9935c2b3a4181c6e1ba1d15fc5e | |
parent | 7861cb5d186b4e28ffd011969f8054fa6d0f128e (diff) | |
download | httpd-0fe6d791a5f99e203e2e6ef16b90e64debe41543.tar.gz |
complete r771579, refactoring mod_watchdog as loadable on win32
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@771581 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | Apache.dsw | 72 | ||||
-rw-r--r-- | Makefile.win | 18 | ||||
-rw-r--r-- | modules/cluster/mod_heartbeat.dsp | 123 | ||||
-rw-r--r-- | modules/cluster/mod_heartmonitor.dsp | 123 | ||||
-rw-r--r-- | modules/mappers/mod_watchdog.c | 36 | ||||
-rw-r--r-- | modules/mappers/mod_watchdog.dsp | 115 | ||||
-rw-r--r-- | modules/mappers/mod_watchdog.h | 35 | ||||
-rw-r--r-- | modules/proxy/proxy_util.c | 68 | ||||
-rw-r--r-- | os/win32/BaseAddr.ref | 2 | ||||
-rw-r--r-- | os/win32/modules.c | 2 |
10 files changed, 526 insertions, 68 deletions
diff --git a/Apache.dsw b/Apache.dsw index adbee99f6c..ebe937cbbb 100644 --- a/Apache.dsw +++ b/Apache.dsw @@ -210,6 +210,12 @@ Package=<4> Project_Dep_Name mod_headers End Project Dependency Begin Project Dependency + Project_Dep_Name mod_heartbeat + End Project Dependency + Begin Project Dependency + Project_Dep_Name mod_heartmonitor + End Project Dependency + Begin Project Dependency Project_Dep_Name mod_ident End Project Dependency Begin Project Dependency @@ -330,6 +336,9 @@ Package=<4> Project_Dep_Name mod_vhost_alias End Project Dependency Begin Project Dependency + Project_Dep_Name mod_watchdog + End Project Dependency + Begin Project Dependency Project_Dep_Name ab End Project Dependency Begin Project Dependency @@ -1873,6 +1882,48 @@ Package=<4> ############################################################################### +Project: "mod_heartbeat"=.\modules\cluster\mod_heartbeat.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libapr + End Project Dependency + Begin Project Dependency + Project_Dep_Name libaprutil + End Project Dependency + Begin Project Dependency + Project_Dep_Name libhttpd + End Project Dependency +}}} + +############################################################################### + +Project: "mod_heartmonitor"=.\modules\cluster\mod_heartmonitor.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libapr + End Project Dependency + Begin Project Dependency + Project_Dep_Name libaprutil + End Project Dependency + Begin Project Dependency + Project_Dep_Name libhttpd + End Project Dependency +}}} + +############################################################################### + Project: "mod_ident"=.\modules\metadata\mod_ident.dsp - Package Owner=<4> Package=<5> @@ -2942,6 +2993,27 @@ Package=<4> ############################################################################### +Project: "mod_watchdog"=.\modules\mappers\mod_watchdog.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libapr + End Project Dependency + Begin Project Dependency + Project_Dep_Name libaprutil + End Project Dependency + Begin Project Dependency + Project_Dep_Name libhttpd + End Project Dependency +}}} + +############################################################################### + Project: "rotatelogs"=.\support\rotatelogs.dsp - Package Owner=<4> Package=<5> diff --git a/Makefile.win b/Makefile.win index a462423174..e1e2faf8a9 100644 --- a/Makefile.win +++ b/Makefile.win @@ -336,12 +336,14 @@ _build: $(MAKE) $(MAKEOPT) -f mod_file_cache.mak CFG="mod_file_cache - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_disk_cache.mak CFG="mod_disk_cache - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_socache_dbm.mak CFG="mod_socache_dbm - Win32 $(LONG)" RECURSE=0 $(CTARGET) -!IFDEF ALL - $(MAKE) $(MAKEOPT) -f mod_socache_dc.mak CFG="mod_socache_dc - Win32 $(LONG)" RECURSE=0 $(CTARGET) -!ENDIF +# $(MAKE) $(MAKEOPT) -f mod_socache_dc.mak CFG="mod_socache_dc - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_socache_memcache.mak CFG="mod_socache_memcache - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_socache_shmcb.mak CFG="mod_socache_shmcb - Win32 $(LONG)" RECURSE=0 $(CTARGET) cd ..\.. + cd modules\cluster + $(MAKE) $(MAKEOPT) -f mod_heartbeat.mak CFG="mod_heartbeat - Win32 $(LONG)" RECURSE=0 $(CTARGET) + $(MAKE) $(MAKEOPT) -f mod_heartmonitor.mak CFG="mod_heartmonitor - Win32 $(LONG)" RECURSE=0 $(CTARGET) + cd ..\.. cd modules\dav\main $(MAKE) $(MAKEOPT) -f mod_dav.mak CFG="mod_dav - Win32 $(LONG)" RECURSE=0 $(CTARGET) cd ..\..\.. @@ -414,6 +416,7 @@ _build: $(MAKE) $(MAKEOPT) -f mod_speling.mak CFG="mod_speling - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_userdir.mak CFG="mod_userdir - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_vhost_alias.mak CFG="mod_vhost_alias - Win32 $(LONG)" RECURSE=0 $(CTARGET) + $(MAKE) $(MAKEOPT) -f mod_watchdog.mak CFG="mod_watchdog - Win32 $(LONG)" RECURSE=0 $(CTARGET) cd ..\.. cd modules\metadata $(MAKE) $(MAKEOPT) -f mod_cern_meta.mak CFG="mod_cern_meta - Win32 $(LONG)" RECURSE=0 $(CTARGET) @@ -580,9 +583,11 @@ _copybin: copy modules\cache\$(LONG)\mod_file_cache.$(src_so) "$(inst_so)" <.y copy modules\cache\$(LONG)\mod_disk_cache.$(src_so) "$(inst_so)" <.y copy modules\cache\$(LONG)\mod_socache_dbm.$(src_so) "$(inst_so)" <.y - -copy modules\cache\$(LONG)\mod_socache_dc.$(src_so) "$(inst_so)" <.y +# copy modules\cache\$(LONG)\mod_socache_dc.$(src_so) "$(inst_so)" <.y copy modules\cache\$(LONG)\mod_socache_memcache.$(src_so) "$(inst_so)" <.y copy modules\cache\$(LONG)\mod_socache_shmcb.$(src_so) "$(inst_so)" <.y + copy modules\cluster\$(LONG)\mod_heartbeat.$(src_so) "$(inst_so)" <.y + copy modules\cluster\$(LONG)\mod_heartmonitor.$(src_so) "$(inst_so)" <.y copy modules\database\$(LONG)\mod_dbd.$(src_so) "$(inst_so)" <.y copy modules\dav\fs\$(LONG)\mod_dav_fs.$(src_so) "$(inst_so)" <.y copy modules\dav\lock\$(LONG)\mod_dav_lock.$(src_so) "$(inst_so)" <.y @@ -638,6 +643,7 @@ _copybin: copy modules\mappers\$(LONG)\mod_speling.$(src_so) "$(inst_so)" <.y copy modules\mappers\$(LONG)\mod_userdir.$(src_so) "$(inst_so)" <.y copy modules\mappers\$(LONG)\mod_vhost_alias.$(src_so) "$(inst_so)" <.y + copy modules\mappers\$(LONG)\mod_watchdog.$(src_so) "$(inst_so)" <.y copy modules\metadata\$(LONG)\mod_cern_meta.$(src_so) "$(inst_so)" <.y copy modules\metadata\$(LONG)\mod_env.$(src_so) "$(inst_so)" <.y copy modules\metadata\$(LONG)\mod_expires.$(src_so) "$(inst_so)" <.y @@ -667,9 +673,7 @@ _copybin: copy modules\session\$(LONG)\mod_session_cookie.$(src_so) "$(inst_so)" <.y copy modules\session\$(LONG)\mod_session_dbd.$(src_so) "$(inst_so)" <.y !IF EXIST("srclib\openssl") -!IFDEF ALL - -copy modules\session\$(LONG)\mod_session_crypto.$(src_so) "$(inst_so)" <.y -!ENDIF +# copy modules\session\$(LONG)\mod_session_crypto.$(src_so) "$(inst_so)" <.y copy modules\ssl\$(LONG)\mod_ssl.$(src_so) "$(inst_so)" <.y -copy srclib\openssl\$(SSLBIN)\libeay32.$(src_dll) "$(inst_dll)" <.y -copy srclib\openssl\$(SSLBIN)\ssleay32.$(src_dll) "$(inst_dll)" <.y diff --git a/modules/cluster/mod_heartbeat.dsp b/modules/cluster/mod_heartbeat.dsp new file mode 100644 index 0000000000..bf2a78894d --- /dev/null +++ b/modules/cluster/mod_heartbeat.dsp @@ -0,0 +1,123 @@ +# Microsoft Developer Studio Project File - Name="mod_heartbeat" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=mod_heartbeat - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mod_heartbeat.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mod_heartbeat.mak" CFG="mod_heartbeat - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mod_heartbeat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "mod_heartbeat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "mod_heartbeat - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c +# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../mappers" /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_heartbeat_src" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x409 /fo"Release/mod_heartbeat.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_heartbeat.so" /d LONG_NAME="heartbeat_module for Apache" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /out:".\Release\mod_heartbeat.so" /base:@..\..\os\win32\BaseAddr.ref,mod_heartbeat.so +# ADD LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Release\mod_heartbeat.so" /base:@..\..\os\win32\BaseAddr.ref,mod_heartbeat.so /opt:ref +# Begin Special Build Tool +TargetPath=.\Release\mod_heartbeat.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 +# End Special Build Tool + +!ELSEIF "$(CFG)" == "mod_heartbeat - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c +# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../mappers" /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_heartbeat_src" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x409 /fo"Debug/mod_heartbeat.res" /i "../../include" /i "../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_heartbeat.so" /d LONG_NAME="heartbeat_module for Apache" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_heartbeat.so" /base:@..\..\os\win32\BaseAddr.ref,mod_heartbeat.so +# ADD LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_heartbeat.so" /base:@..\..\os\win32\BaseAddr.ref,mod_heartbeat.so +# Begin Special Build Tool +TargetPath=.\Debug\mod_heartbeat.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "mod_heartbeat - Win32 Release" +# Name "mod_heartbeat - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" +# Begin Source File + +SOURCE=.\mod_heartbeat.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter ".h" +# Begin Source File + +SOURCE=.\mod_proxy.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\build\win32\httpd.rc +# End Source File +# End Target +# End Project diff --git a/modules/cluster/mod_heartmonitor.dsp b/modules/cluster/mod_heartmonitor.dsp new file mode 100644 index 0000000000..9c9e1570bf --- /dev/null +++ b/modules/cluster/mod_heartmonitor.dsp @@ -0,0 +1,123 @@ +# Microsoft Developer Studio Project File - Name="mod_heartmonitor" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=mod_heartmonitor - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mod_heartmonitor.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mod_heartmonitor.mak" CFG="mod_heartmonitor - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mod_heartmonitor - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "mod_heartmonitor - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "mod_heartmonitor - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c +# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../mappers" /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_heartmonitor_src" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x409 /fo"Release/mod_heartmonitor.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_heartmonitor.so" /d LONG_NAME="heartmonitor_module for Apache" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /out:".\Release\mod_heartmonitor.so" /base:@..\..\os\win32\BaseAddr.ref,mod_heartmonitor.so +# ADD LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Release\mod_heartmonitor.so" /base:@..\..\os\win32\BaseAddr.ref,mod_heartmonitor.so /opt:ref +# Begin Special Build Tool +TargetPath=.\Release\mod_heartmonitor.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 +# End Special Build Tool + +!ELSEIF "$(CFG)" == "mod_heartmonitor - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c +# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../mappers" /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_heartmonitor_src" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x409 /fo"Debug/mod_heartmonitor.res" /i "../../include" /i "../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_heartmonitor.so" /d LONG_NAME="heartmonitor_module for Apache" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_heartmonitor.so" /base:@..\..\os\win32\BaseAddr.ref,mod_heartmonitor.so +# ADD LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_heartmonitor.so" /base:@..\..\os\win32\BaseAddr.ref,mod_heartmonitor.so +# Begin Special Build Tool +TargetPath=.\Debug\mod_heartmonitor.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "mod_heartmonitor - Win32 Release" +# Name "mod_heartmonitor - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" +# Begin Source File + +SOURCE=.\mod_heartmonitor.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter ".h" +# Begin Source File + +SOURCE=.\mod_proxy.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\build\win32\httpd.rc +# End Source File +# End Target +# End Project diff --git a/modules/mappers/mod_watchdog.c b/modules/mappers/mod_watchdog.c index 7fd3dfb61f..838171b098 100644 --- a/modules/mappers/mod_watchdog.c +++ b/modules/mappers/mod_watchdog.c @@ -300,11 +300,11 @@ static apr_status_t wd_startup(ap_watchdog_t *w, apr_pool_t *p) return rc; } -AP_DECLARE(apr_status_t) ap_watchdog_get_instance(ap_watchdog_t **watchdog, - const char *name, - int parent, - int singleton, - apr_pool_t *p) +AP_WD_DECLARE(apr_status_t) ap_watchdog_get_instance(ap_watchdog_t **watchdog, + const char *name, + int parent, + int singleton, + apr_pool_t *p) { ap_watchdog_t *w; const char *pver = parent ? AP_WATCHODG_PVERSION : AP_WATCHODG_CVERSION; @@ -330,10 +330,10 @@ AP_DECLARE(apr_status_t) ap_watchdog_get_instance(ap_watchdog_t **watchdog, pver, *watchdog); } -AP_DECLARE(apr_status_t) ap_watchdog_set_callback_interval(ap_watchdog_t *w, - apr_interval_time_t interval, - const void *data, - ap_watchdog_callback_fn_t *callback) +AP_WD_DECLARE(apr_status_t) ap_watchdog_set_callback_interval(ap_watchdog_t *w, + apr_interval_time_t interval, + const void *data, + ap_watchdog_callback_fn_t *callback) { watchdog_list_t *c = w->callbacks; apr_status_t rv = APR_EOF; @@ -355,10 +355,10 @@ AP_DECLARE(apr_status_t) ap_watchdog_set_callback_interval(ap_watchdog_t *w, return rv; } -AP_DECLARE(apr_status_t) ap_watchdog_register_callback(ap_watchdog_t *w, - apr_interval_time_t interval, - const void *data, - ap_watchdog_callback_fn_t *callback) +AP_WD_DECLARE(apr_status_t) ap_watchdog_register_callback(ap_watchdog_t *w, + apr_interval_time_t interval, + const void *data, + ap_watchdog_callback_fn_t *callback) { watchdog_list_t *c = w->callbacks; @@ -726,7 +726,7 @@ static void wd_register_hooks(apr_pool_t *p) /* the static hooks into our module from the other parts of the server. */ /* */ /*--------------------------------------------------------------------------*/ -module AP_MODULE_DECLARE_DATA watchdog_module = { +AP_MODULE_DECLARE_DATA module watchdog_module = { STANDARD20_MODULE_STUFF, NULL, /* create per-directory config structure */ NULL, /* merge per-directory config structures */ @@ -748,22 +748,22 @@ APR_HOOK_STRUCT( APR_HOOK_LINK(watchdog_step) ) -APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ap, AP, int, watchdog_need, +APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ap, AP_WD, int, watchdog_need, (server_rec *s, const char *name, int parent, int singleton), (s, name, parent, singleton), DECLINED) -APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap, AP, int, watchdog_init, +APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap, AP_WD, int, watchdog_init, (server_rec *s, const char *name, apr_pool_t *pool), (s, name, pool), OK, DECLINED) -APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap, AP, int, watchdog_exit, +APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap, AP_WD, int, watchdog_exit, (server_rec *s, const char *name, apr_pool_t *pool), (s, name, pool), OK, DECLINED) -APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap, AP, int, watchdog_step, +APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ap, AP_WD, int, watchdog_step, (server_rec *s, const char *name, apr_pool_t *pool), (s, name, pool), diff --git a/modules/mappers/mod_watchdog.dsp b/modules/mappers/mod_watchdog.dsp new file mode 100644 index 0000000000..fcb1f28c9f --- /dev/null +++ b/modules/mappers/mod_watchdog.dsp @@ -0,0 +1,115 @@ +# Microsoft Developer Studio Project File - Name="mod_watchdog" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=mod_watchdog - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mod_watchdog.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mod_watchdog.mak" CFG="mod_watchdog - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mod_watchdog - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "mod_watchdog - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "mod_watchdog - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c +# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "AP_WD_DECLARE_EXPORT" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_watchdog_src" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /fo"Release/mod_watchdog.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_watchdog.so" /d LONG_NAME="watchdog_module for Apache" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib /nologo /subsystem:windows /dll /out:".\Release\mod_watchdog.so" /base:@..\..\os\win32\BaseAddr.ref,mod_watchdog.so +# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Release\mod_watchdog.so" /base:@..\..\os\win32\BaseAddr.ref,mod_watchdog.so /opt:ref +# Begin Special Build Tool +TargetPath=.\Release\mod_watchdog.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 +# End Special Build Tool + +!ELSEIF "$(CFG)" == "mod_watchdog - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c +# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "AP_WD_DECLARE_EXPORT" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_watchdog_src" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /fo"Debug/mod_watchdog.res" /i "../../include" /i "../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_watchdog.so" /d LONG_NAME="watchdog_module for Apache" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_watchdog.so" /base:@..\..\os\win32\BaseAddr.ref,mod_watchdog.so +# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_watchdog.so" /base:@..\..\os\win32\BaseAddr.ref,mod_watchdog.so +# Begin Special Build Tool +TargetPath=.\Debug\mod_watchdog.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "mod_watchdog - Win32 Release" +# Name "mod_watchdog - Win32 Debug" +# Begin Source File + +SOURCE=.\mod_watchdog.c +# End Source File +# Begin Source File + +SOURCE=.\mod_watchdog.h +# End Source File +# Begin Source File + +SOURCE=..\..\build\win32\httpd.rc +# End Source File +# End Target +# End Project diff --git a/modules/mappers/mod_watchdog.h b/modules/mappers/mod_watchdog.h index 392650f50d..c99712f8d7 100644 --- a/modules/mappers/mod_watchdog.h +++ b/modules/mappers/mod_watchdog.h @@ -85,6 +85,27 @@ extern "C" { typedef struct ap_watchdog_t ap_watchdog_t; +/* Create a set of AP_WD_DECLARE(type), AP_WD_DECLARE_NONSTD(type) and + * AP_WD_DECLARE_DATA with appropriate export and import tags for the platform + */ +#if !defined(WIN32) +#define AP_WD_DECLARE(type) type +#define AP_WD_DECLARE_NONSTD(type) type +#define AP_WD_DECLARE_DATA +#elif defined(AP_WD_DECLARE_STATIC) +#define AP_WD_DECLARE(type) type __stdcall +#define AP_WD_DECLARE_NONSTD(type) type +#define AP_WD_DECLARE_DATA +#elif defined(AP_WD_DECLARE_EXPORT) +#define AP_WD_DECLARE(type) __declspec(dllexport) type __stdcall +#define AP_WD_DECLARE_NONSTD(type) __declspec(dllexport) type +#define AP_WD_DECLARE_DATA __declspec(dllexport) +#else +#define AP_WD_DECLARE(type) __declspec(dllimport) type __stdcall +#define AP_WD_DECLARE_NONSTD(type) __declspec(dllimport) type +#define AP_WD_DECLARE_DATA __declspec(dllimport) +#endif + /** * Callback function used for watchdog. * @param state Watchdog state function. See AP_WATCHODG_STATE_ . @@ -108,7 +129,7 @@ typedef apr_status_t ap_watchdog_callback_fn_t(int state, void *data, * and function will create a new watchdog instance. * Note that default client process watchdog works in singleton mode. */ -AP_DECLARE(apr_status_t) ap_watchdog_get_instance(ap_watchdog_t **watchdog, +AP_WD_DECLARE(apr_status_t) ap_watchdog_get_instance(ap_watchdog_t **watchdog, const char *name, int parent, int singleton, @@ -122,7 +143,7 @@ AP_DECLARE(apr_status_t) ap_watchdog_get_instance(ap_watchdog_t **watchdog, * @param data The data to pass to the callback function. * @return APR_SUCCESS if all went well. APR_EEXIST if already registered. */ -AP_DECLARE(apr_status_t) ap_watchdog_register_callback(ap_watchdog_t *watchdog, +AP_WD_DECLARE(apr_status_t) ap_watchdog_register_callback(ap_watchdog_t *watchdog, apr_interval_time_t interval, const void *data, ap_watchdog_callback_fn_t *callback); @@ -135,7 +156,7 @@ AP_DECLARE(apr_status_t) ap_watchdog_register_callback(ap_watchdog_t *watchdog, * @param data The data to pass to the callback function. * @return APR_SUCCESS if all went well. APR_EOF if callback was not found. */ -AP_DECLARE(apr_status_t) ap_watchdog_set_callback_interval(ap_watchdog_t *w, +AP_WD_DECLARE(apr_status_t) ap_watchdog_set_callback_interval(ap_watchdog_t *w, apr_interval_time_t interval, const void *data, ap_watchdog_callback_fn_t *callback); @@ -152,7 +173,7 @@ AP_DECLARE(apr_status_t) ap_watchdog_set_callback_interval(ap_watchdog_t *w, * should ensure their post_config hook is called after watchdog * post_config. */ -APR_DECLARE_EXTERNAL_HOOK(ap, AP, int, watchdog_need, (server_rec *s, +APR_DECLARE_EXTERNAL_HOOK(ap, AP_WD, int, watchdog_need, (server_rec *s, const char *name, int parent, int singleton)) @@ -163,7 +184,7 @@ APR_DECLARE_EXTERNAL_HOOK(ap, AP, int, watchdog_need, (server_rec *s, * @param name Watchdog name. * @param pool The pool used to create the watchdog. */ -APR_DECLARE_EXTERNAL_HOOK(ap, AP, int, watchdog_init, ( +APR_DECLARE_EXTERNAL_HOOK(ap, AP_WD, int, watchdog_init, ( server_rec *s, const char *name, apr_pool_t *pool)) @@ -174,7 +195,7 @@ APR_DECLARE_EXTERNAL_HOOK(ap, AP, int, watchdog_init, ( * @param name Watchdog name. * @param pool The pool used to create the watchdog. */ -APR_DECLARE_EXTERNAL_HOOK(ap, AP, int, watchdog_exit, ( +APR_DECLARE_EXTERNAL_HOOK(ap, AP_WD, int, watchdog_exit, ( server_rec *s, const char *name, apr_pool_t *pool)) @@ -185,7 +206,7 @@ APR_DECLARE_EXTERNAL_HOOK(ap, AP, int, watchdog_exit, ( * @param name Watchdog name. * @param pool Temporary pool destroyed after the call. */ -APR_DECLARE_EXTERNAL_HOOK(ap, AP, int, watchdog_step, ( +APR_DECLARE_EXTERNAL_HOOK(ap, AP_WD, int, watchdog_step, ( server_rec *s, const char *name, apr_pool_t *pool)) diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c index fd29389cf3..d592415388 100644 --- a/modules/proxy/proxy_util.c +++ b/modules/proxy/proxy_util.c @@ -1052,6 +1052,7 @@ PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r, /* * XXX FIXME: Make sure this handled the ambiguous case of the :<PORT> * after the hostname + * XXX FIXME: Ensure the /uri component is a case sensitive match */ if (r->proxyreq != PROXYREQ_REVERSE) { return url; @@ -1069,56 +1070,55 @@ PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r, proxy_server_conf *sconf = (proxy_server_conf *) ap_get_module_config(r->server->module_config, &proxy_module); proxy_balancer *balancer; - const char *real; - real = ent[i].real; - ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, - "ppr: real: %s", real); + const char *real = ent[i].real; /* * First check if mapping against a balancer and see * if we have such a entity. If so, then we need to * find the particulars of the actual worker which may * or may not be the right one... basically, we need * to find which member actually handled this request. - * - * TODO: Recover the path from real and use that - * for more exact matching */ - if ((strncasecmp(real, "balancer:", 9) == 0) && + if ((strncasecmp(real, "balancer://", 11) == 0) && (balancer = ap_proxy_get_balancer(r->pool, sconf, real))) { - int n; - proxy_worker *worker; - worker = (proxy_worker *)balancer->workers->elts; - ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, - "ppr: checking balancer: %s", - balancer->name); + int n, l3; + proxy_worker *worker = (proxy_worker *)balancer->workers->elts; + const char *urlpart = ap_strchr_c(real + 11, '/'); + if (urlpart) { + if (!urlpart[1]) + urlpart = NULL; + else + l3 = strlen(urlpart); + } + /* The balancer comparison is a bit trickier. Given the context + * BalancerMember balancer://alias http://example.com/foo + * ProxyPassReverse /bash balancer://alias/bar + * translate url http://example.com/foo/bar/that to /bash/that + */ for (n = 0; n < balancer->workers->nelts; n++) { - if (worker->port) { - u = apr_psprintf(r->pool, "%s://%s:%d/", worker->scheme, - worker->hostname, worker->port); - } - else { - u = apr_psprintf(r->pool, "%s://%s/", worker->scheme, - worker->hostname); + l2 = strlen(worker->name); + if (urlpart) { + if (worker->name[l2 - 1] == '/') + --l2; + if (l1 >= l2 + l3 + && strncasecmp(worker->name, url, l2) == 0 + && strncmp(urlpart, url + l2, l3) == 0) { + u = apr_pstrcat(r->pool, ent[i].fake, + &url[l2 + l3], NULL); + return ap_construct_url(r->pool, u, r); + } } - ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, - "ppr: matching member (%s) and URL (%s)", - u, url); - - l2 = strlen(u); - if (l1 >= l2 && strncasecmp(u, url, l2) == 0) { + else if (l1 >= l2 && strncasecmp(worker->name, url, l2) == 0) { u = apr_pstrcat(r->pool, ent[i].fake, &url[l2], NULL); - ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server, - "ppr: matched member (%s)", u); return ap_construct_url(r->pool, u, r); } worker++; } } - - l2 = strlen(real); - if (l1 >= l2 && strncasecmp(real, url, l2) == 0) { - u = apr_pstrcat(r->pool, ent[i].fake, &url[l2], NULL); - return ap_construct_url(r->pool, u, r); + else { + l2 = strlen(real); + if (l1 >= l2 && strncasecmp(real, url, l2) == 0) { + u = apr_pstrcat(r->pool, ent[i].fake, &url[l2], NULL); + return ap_construct_url(r->pool, u, r); } } diff --git a/os/win32/BaseAddr.ref b/os/win32/BaseAddr.ref index b0c7b7afb5..ab36471b58 100644 --- a/os/win32/BaseAddr.ref +++ b/os/win32/BaseAddr.ref @@ -103,3 +103,5 @@ mod_lbmethod_bybusyness.so 0x6F830000 0x00010000 mod_lbmethod_byrequests.so 0x6F820000 0x00010000 mod_lbmethod_bytraffic.so 0x6F810000 0x00010000 mod_lbmethod_heartbeat.so 0x6F800000 0x00010000 +mod_heartbeat.so 0x6F7F0000 0x00010000 +mod_heartmonitor.so 0x6F7E0000 0x00010000 diff --git a/os/win32/modules.c b/os/win32/modules.c index 6e1adae2c2..252421f78a 100644 --- a/os/win32/modules.c +++ b/os/win32/modules.c @@ -27,7 +27,6 @@ extern module win32_module; extern module mpm_winnt_module; extern module http_module; extern module so_module; -extern module watchdog_module; AP_DECLARE_DATA module *ap_prelinked_modules[] = { &core_module, @@ -53,6 +52,5 @@ AP_DECLARE_DATA module *ap_preloaded_modules[] = { &mpm_winnt_module, &http_module, &so_module, - &watchdog_module, NULL }; |