passenger 2.0.6 → 2.1.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- data/DEVELOPERS.TXT +10 -4
- data/LICENSE +1 -1
- data/NEWS +0 -0
- data/Rakefile +183 -117
- data/benchmark/dispatcher.rb +5 -9
- data/bin/passenger-install-apache2-module +52 -18
- data/bin/passenger-memory-stats +67 -13
- data/bin/passenger-spawn-server +8 -4
- data/bin/passenger-status +21 -46
- data/bin/passenger-stress-test +5 -5
- data/debian/postinst +1 -1
- data/doc/ApplicationPool algorithm.txt +180 -128
- data/doc/Architectural overview.html +1 -778
- data/doc/Security of user switching support.html +1 -643
- data/doc/Users guide Apache.html +3127 -0
- data/doc/Users guide Nginx.html +1458 -0
- data/doc/Users guide.html +1404 -467
- data/doc/Users guide.txt +843 -105
- data/doc/cxxapi/ApplicationPoolServer_8h-source.html +751 -641
- data/doc/cxxapi/ApplicationPool_8h-source.html +168 -171
- data/doc/cxxapi/Application_8h-source.html +494 -394
- data/doc/cxxapi/Bucket_8h-source.html +21 -15
- data/doc/cxxapi/CachedFileStat_8h-source.html +191 -0
- data/doc/cxxapi/Configuration_8h-source.html +311 -149
- data/doc/cxxapi/DirectoryMapper_8h-source.html +309 -0
- data/doc/cxxapi/DummySpawnManager_8h-source.html +3 -4
- data/doc/cxxapi/Exceptions_8h-source.html +182 -165
- data/doc/cxxapi/FileChecker_8h-source.html +130 -0
- data/doc/cxxapi/Hooks_8h-source.html +2 -3
- data/doc/cxxapi/Logging_8h-source.html +92 -89
- data/doc/cxxapi/MessageChannel_8h-source.html +585 -477
- data/doc/cxxapi/PoolOptions_8h-source.html +305 -0
- data/doc/cxxapi/SpawnManager_8h-source.html +515 -540
- data/doc/cxxapi/StandardApplicationPool_8h-source.html +779 -679
- data/doc/cxxapi/SystemTime_8h-source.html +104 -0
- data/doc/cxxapi/Utils_8h-source.html +331 -227
- data/doc/cxxapi/annotated.html +6 -7
- data/doc/cxxapi/classClient-members.html +1 -2
- data/doc/cxxapi/classClient.html +1 -2
- data/doc/cxxapi/classHooks-members.html +5 -2
- data/doc/cxxapi/classHooks.html +112 -2
- data/doc/cxxapi/classPassenger_1_1Application-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1Application.html +8 -9
- data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +42 -81
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +3 -4
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +3 -2
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +74 -3
- data/doc/cxxapi/classPassenger_1_1BusyException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1BusyException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +38 -0
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +256 -0
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +2 -3
- data/doc/cxxapi/{classPassenger_1_1Thread-members.html → classPassenger_1_1FileChecker-members.html} +4 -5
- data/doc/cxxapi/classPassenger_1_1FileChecker.html +121 -0
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileSystemException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1IOException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1IOException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +5 -2
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +155 -5
- data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption-members.html → classPassenger_1_1RuntimeException-members.html} +2 -3
- data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption.html → classPassenger_1_1RuntimeException.html} +10 -8
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SpawnManager.html +15 -56
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +5 -4
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +20 -81
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1SystemException-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SystemException.html +9 -10
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/{classboost_1_1this__thread_1_1disable__syscall__interruption-members.html → classPassenger_1_1SystemTime-members.html} +5 -3
- data/doc/cxxapi/classPassenger_1_1SystemTime.html +86 -0
- data/doc/cxxapi/classPassenger_1_1TempFile-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1TempFile.html +17 -9
- data/doc/cxxapi/definitions_8h-source.html +1 -2
- data/doc/cxxapi/files.html +6 -3
- data/doc/cxxapi/functions.html +98 -35
- data/doc/cxxapi/functions_func.html +60 -32
- data/doc/cxxapi/functions_type.html +1 -2
- data/doc/cxxapi/functions_vars.html +27 -2
- data/doc/cxxapi/graph_legend.html +1 -2
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Configuration.html +3 -4
- data/doc/cxxapi/group__Configuration.png +0 -0
- data/doc/cxxapi/group__Core.html +3 -4
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Exceptions.html +4 -2
- data/doc/cxxapi/group__Hooks.html +1 -6
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/group__Support.html +259 -36
- data/doc/cxxapi/hierarchy.html +6 -7
- data/doc/cxxapi/inherit__graph__0.map +1 -1
- data/doc/cxxapi/inherit__graph__0.md5 +1 -1
- data/doc/cxxapi/inherit__graph__0.png +0 -0
- data/doc/cxxapi/inherit__graph__1.map +1 -1
- data/doc/cxxapi/inherit__graph__1.md5 +1 -1
- data/doc/cxxapi/inherit__graph__1.png +0 -0
- data/doc/cxxapi/inherit__graph__10.map +1 -1
- data/doc/cxxapi/inherit__graph__10.md5 +1 -1
- data/doc/cxxapi/inherit__graph__10.png +0 -0
- data/doc/cxxapi/inherit__graph__11.map +1 -1
- data/doc/cxxapi/inherit__graph__11.md5 +1 -1
- data/doc/cxxapi/inherit__graph__11.png +0 -0
- data/doc/cxxapi/inherit__graph__12.map +2 -1
- data/doc/cxxapi/inherit__graph__12.md5 +1 -1
- data/doc/cxxapi/inherit__graph__12.png +0 -0
- data/doc/cxxapi/inherit__graph__13.map +1 -1
- data/doc/cxxapi/inherit__graph__13.md5 +1 -1
- data/doc/cxxapi/inherit__graph__13.png +0 -0
- data/doc/cxxapi/inherit__graph__14.map +1 -2
- data/doc/cxxapi/inherit__graph__14.md5 +1 -1
- data/doc/cxxapi/inherit__graph__14.png +0 -0
- data/doc/cxxapi/inherit__graph__15.map +1 -1
- data/doc/cxxapi/inherit__graph__15.md5 +1 -1
- data/doc/cxxapi/inherit__graph__15.png +0 -0
- data/doc/cxxapi/inherit__graph__16.map +1 -1
- data/doc/cxxapi/inherit__graph__16.md5 +1 -1
- data/doc/cxxapi/inherit__graph__16.png +0 -0
- data/doc/cxxapi/inherit__graph__17.png +0 -0
- data/doc/cxxapi/inherit__graph__18.png +0 -0
- data/doc/cxxapi/inherit__graph__19.png +0 -0
- data/doc/cxxapi/inherit__graph__2.map +1 -1
- data/doc/cxxapi/inherit__graph__2.md5 +1 -1
- data/doc/cxxapi/inherit__graph__2.png +0 -0
- data/doc/cxxapi/inherit__graph__20.map +1 -1
- data/doc/cxxapi/inherit__graph__20.md5 +1 -1
- data/doc/cxxapi/inherit__graph__20.png +0 -0
- data/doc/cxxapi/inherit__graph__21.map +1 -1
- data/doc/cxxapi/inherit__graph__21.md5 +1 -1
- data/doc/cxxapi/inherit__graph__21.png +0 -0
- data/doc/cxxapi/inherit__graph__3.map +1 -1
- data/doc/cxxapi/inherit__graph__3.md5 +1 -1
- data/doc/cxxapi/inherit__graph__3.png +0 -0
- data/doc/cxxapi/inherit__graph__4.map +1 -1
- data/doc/cxxapi/inherit__graph__4.md5 +1 -1
- data/doc/cxxapi/inherit__graph__4.png +0 -0
- data/doc/cxxapi/inherit__graph__5.map +2 -1
- data/doc/cxxapi/inherit__graph__5.md5 +1 -1
- data/doc/cxxapi/inherit__graph__5.png +0 -0
- data/doc/cxxapi/inherit__graph__6.map +1 -1
- data/doc/cxxapi/inherit__graph__6.md5 +1 -1
- data/doc/cxxapi/inherit__graph__6.png +0 -0
- data/doc/cxxapi/inherit__graph__7.map +1 -1
- data/doc/cxxapi/inherit__graph__7.md5 +1 -1
- data/doc/cxxapi/inherit__graph__7.png +0 -0
- data/doc/cxxapi/inherit__graph__8.map +1 -1
- data/doc/cxxapi/inherit__graph__8.md5 +1 -1
- data/doc/cxxapi/inherit__graph__8.png +0 -0
- data/doc/cxxapi/inherit__graph__9.map +1 -2
- data/doc/cxxapi/inherit__graph__9.md5 +1 -1
- data/doc/cxxapi/inherit__graph__9.png +0 -0
- data/doc/cxxapi/inherits.html +30 -31
- data/doc/cxxapi/main.html +1 -2
- data/doc/cxxapi/modules.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString.html +2 -3
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +2 -3
- data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +49 -0
- data/doc/cxxapi/structPassenger_1_1PoolOptions.html +404 -0
- data/doc/cxxapi/tree.html +18 -20
- data/doc/images/conservative_spawning.png +0 -0
- data/doc/images/conservative_spawning.svg +248 -0
- data/doc/images/smart-lv2.png +0 -0
- data/doc/images/smart-lv2.svg +320 -0
- data/doc/rdoc/classes/ConditionVariable.html +68 -34
- data/doc/rdoc/classes/Exception.html +16 -16
- data/doc/rdoc/classes/GC.html +9 -9
- data/doc/rdoc/classes/IO.html +36 -17
- data/doc/rdoc/classes/PhusionPassenger.html +183 -0
- data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +511 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer.html +285 -242
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerAlreadyStarted.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerError.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerNotStarted.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/UnknownMessage.html +3 -3
- data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +598 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +140 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +247 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +138 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AppInitError.html +36 -19
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/Application.html +81 -96
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/ConsoleTextTemplate.html +18 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/FrameworkInitError.html +20 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/HTMLTemplate.html +18 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/InitializationError.html +9 -9
- data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/MessageChannel.html +93 -92
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/NativeSupport.html +55 -25
- data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +185 -0
- data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +182 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz.html +95 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +424 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +98 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +200 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +444 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +98 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +154 -0
- data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +408 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/UnknownError.html +13 -13
- data/doc/rdoc/classes/PhusionPassenger/Utils.html +687 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/VersionNotFound.html +8 -8
- data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
- data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +188 -0
- data/doc/rdoc/classes/PlatformInfo.html +663 -159
- data/doc/rdoc/classes/RakeExtensions.html +4 -4
- data/doc/rdoc/classes/Signal.html +134 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/DEVELOPERS_TXT.html +15 -10
- data/doc/rdoc/files/README.html +5 -7
- data/doc/rdoc/files/ext/{passenger → phusion_passenger}/native_support_c.html +2 -2
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_request_handler_rb.html +7 -9
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +120 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_server_rb.html +7 -10
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +99 -0
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +92 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/application_rb.html +6 -8
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/console_text_template_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/constants_rb.html +4 -5
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/dependencies_rb.html +6 -8
- data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +116 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/exceptions_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/html_template_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/message_channel_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/platform_info_rb.html +6 -7
- data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +123 -0
- data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +117 -0
- data/doc/rdoc/files/lib/{passenger/utils_rb.html → phusion_passenger/railz/application_spawner_rb.html} +24 -17
- data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +126 -0
- data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +139 -0
- data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +118 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/simple_benchmarking_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/spawn_manager_rb.html +40 -24
- data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +169 -0
- data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +120 -0
- data/doc/rdoc/files/lib/rake/extensions_rb.html +3 -4
- data/doc/rdoc/fr_class_index.html +37 -19
- data/doc/rdoc/fr_file_index.html +25 -14
- data/doc/rdoc/fr_method_index.html +145 -74
- data/ext/apache2/Application.h +145 -44
- data/ext/apache2/ApplicationPool.h +27 -29
- data/ext/apache2/ApplicationPoolServer.h +183 -72
- data/ext/apache2/ApplicationPoolServerExecutable.cpp +249 -42
- data/ext/apache2/Bucket.cpp +61 -9
- data/ext/apache2/Bucket.h +15 -8
- data/ext/apache2/CachedFileStat.cpp +114 -0
- data/ext/apache2/CachedFileStat.h +169 -0
- data/ext/apache2/Configuration.cpp +213 -22
- data/ext/apache2/Configuration.h +176 -13
- data/ext/apache2/DirectoryMapper.h +287 -0
- data/ext/apache2/Exceptions.h +30 -12
- data/ext/apache2/FileChecker.h +108 -0
- data/ext/apache2/Hooks.cpp +709 -493
- data/ext/apache2/LICENSE-CNRI.TXT +15 -0
- data/ext/apache2/Logging.h +26 -22
- data/ext/apache2/MessageChannel.h +124 -15
- data/ext/apache2/PoolOptions.h +283 -0
- data/ext/apache2/SpawnManager.h +75 -99
- data/ext/apache2/StandardApplicationPool.h +296 -195
- data/ext/apache2/SystemTime.cpp +28 -0
- data/ext/apache2/SystemTime.h +82 -0
- data/ext/apache2/Utils.cpp +172 -18
- data/ext/apache2/Utils.h +124 -19
- data/ext/boost/cstdint.hpp +4 -2
- data/ext/boost/current_function.hpp +67 -0
- data/ext/boost/detail/sp_counted_base.hpp +4 -4
- data/ext/boost/thread/exceptions.hpp +2 -1
- data/ext/boost/thread/pthread/thread.hpp +11 -3
- data/ext/boost/thread/pthread/thread_data.hpp +2 -1
- data/ext/oxt/backtrace.cpp +172 -0
- data/ext/oxt/backtrace.hpp +135 -0
- data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
- data/ext/oxt/detail/backtrace_enabled.hpp +155 -0
- data/ext/oxt/detail/spin_lock_gcc_x86.hpp +82 -0
- data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
- data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
- data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
- data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
- data/ext/oxt/macros.hpp +58 -0
- data/ext/oxt/spin_lock.hpp +55 -0
- data/ext/{apache2/System.cpp → oxt/system_calls.cpp} +87 -52
- data/ext/oxt/system_calls.hpp +234 -0
- data/ext/oxt/thread.cpp +32 -0
- data/ext/oxt/thread.hpp +223 -0
- data/ext/oxt/tracable_exception.cpp +87 -0
- data/ext/oxt/tracable_exception.hpp +35 -0
- data/{lib/passenger/constants.rb → ext/phusion_passenger/extconf.rb} +14 -9
- data/ext/{passenger → phusion_passenger}/native_support.c +33 -6
- data/lib/{passenger → phusion_passenger}/abstract_request_handler.rb +209 -93
- data/lib/{passenger → phusion_passenger}/abstract_server.rb +23 -8
- data/lib/phusion_passenger/abstract_server_collection.rb +301 -0
- data/lib/phusion_passenger/admin_tools.rb +25 -0
- data/lib/phusion_passenger/admin_tools/control_process.rb +107 -0
- data/lib/{passenger → phusion_passenger}/application.rb +13 -16
- data/lib/{passenger → phusion_passenger}/console_text_template.rb +2 -2
- data/{ext/passenger/extconf.rb → lib/phusion_passenger/constants.rb} +5 -5
- data/lib/{passenger → phusion_passenger}/dependencies.rb +38 -32
- data/lib/phusion_passenger/events.rb +45 -0
- data/lib/{passenger → phusion_passenger}/exceptions.rb +12 -5
- data/lib/{passenger → phusion_passenger}/html_template.rb +2 -2
- data/lib/{passenger → phusion_passenger}/message_channel.rb +3 -2
- data/lib/phusion_passenger/platform_info.rb +500 -0
- data/lib/{passenger → phusion_passenger}/rack/application_spawner.rb +29 -22
- data/lib/{passenger → phusion_passenger}/rack/request_handler.rb +14 -9
- data/lib/{passenger → phusion_passenger}/railz/application_spawner.rb +94 -74
- data/lib/{passenger → phusion_passenger}/railz/cgi_fixed.rb +2 -2
- data/lib/{passenger → phusion_passenger}/railz/framework_spawner.rb +86 -98
- data/lib/{passenger → phusion_passenger}/railz/request_handler.rb +6 -6
- data/lib/{passenger → phusion_passenger}/simple_benchmarking.rb +0 -0
- data/lib/{passenger → phusion_passenger}/spawn_manager.rb +136 -128
- data/lib/{passenger → phusion_passenger}/templates/apache2_config_snippets.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
- data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
- data/lib/{passenger → phusion_passenger}/templates/app_init_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/database_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/deployment_example.txt.erb +1 -1
- data/lib/{passenger → phusion_passenger}/templates/error_layout.css +0 -0
- data/lib/{passenger → phusion_passenger}/templates/error_layout.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/framework_init_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/general_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/invalid_app_root.html.erb +1 -1
- data/lib/{passenger → phusion_passenger}/templates/load_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/no_write_permission_to_passenger_root.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/run_installer_as_root.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/version_not_found.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/welcome.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/utils.rb +210 -44
- data/lib/{passenger → phusion_passenger}/wsgi/application_spawner.rb +18 -15
- data/lib/{passenger → phusion_passenger}/wsgi/request_handler.py +7 -1
- data/man/passenger-memory-stats.8 +1 -1
- data/misc/render_error_pages.rb +1 -1
- data/test/ApplicationPoolServerTest.cpp +0 -28
- data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +4 -0
- data/test/ApplicationPoolTest.cpp +307 -69
- data/test/CachedFileStatTest.cpp +262 -0
- data/test/FileCheckerTest.cpp +79 -0
- data/test/MessageChannelTest.cpp +3 -3
- data/test/PoolOptionsTest.cpp +37 -0
- data/test/SpawnManagerTest.cpp +4 -4
- data/test/StandardApplicationPoolTest.cpp +4 -0
- data/test/SystemTimeTest.cpp +37 -0
- data/test/UtilsTest.cpp +137 -0
- data/test/integration_tests.rb +270 -23
- data/test/oxt/backtrace_test.cpp +128 -0
- data/test/oxt/oxt_test_main.cpp +25 -0
- data/test/oxt/syscall_interruption_test.cpp +50 -0
- data/test/ruby/abstract_request_handler_spec.rb +83 -0
- data/test/ruby/abstract_server_collection_spec.rb +246 -0
- data/test/ruby/application_spec.rb +3 -3
- data/test/ruby/message_channel_spec.rb +2 -2
- data/test/ruby/rack/application_spawner_spec.rb +3 -5
- data/test/ruby/rails/application_spawner_spec.rb +54 -15
- data/test/ruby/rails/framework_spawner_spec.rb +6 -8
- data/test/ruby/rails/minimal_spawner_spec.rb +29 -0
- data/test/ruby/rails/spawner_error_handling_spec.rb +1 -1
- data/test/ruby/rails/spawner_privilege_lowering_spec.rb +3 -3
- data/test/ruby/spawn_manager_spec.rb +23 -12
- data/test/ruby/utils_spec.rb +36 -2
- data/test/ruby/wsgi/application_spawner_spec.rb +47 -0
- data/test/stub/apache2/httpd.conf.erb +3 -5
- data/test/stub/message_channel.rb +2 -2
- data/test/stub/message_channel_2.rb +2 -2
- data/test/stub/message_channel_3.rb +3 -3
- data/test/stub/minimal-railsapp/README +0 -0
- data/test/stub/minimal-railsapp/config/application.rb +0 -0
- data/test/stub/minimal-railsapp/config/environment.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionmailer/lib/action_mailer.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_controller.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_pack.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_view.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activerecord/lib/active_record.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activeresource/lib/active_resource.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/dispatcher.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/initializer.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/ruby_version_check.rb +0 -0
- data/test/stub/rails_apps/foobar/app/controllers/foo_controller.rb +8 -0
- data/test/stub/rails_apps/foobar/config/environments/development.rb +1 -2
- data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +21 -1
- data/test/stub/rails_apps/mycook/sites/some.site/public/uploads.html +26 -0
- data/test/stub/rails_apps/mycook/sites/some.site/public/welcome/cached.html +26 -0
- data/test/stub/railsapp/app/controllers/application.rb +0 -0
- data/test/stub/railsapp/app/controllers/bar_controller_1.rb +0 -0
- data/test/stub/railsapp/app/controllers/bar_controller_2.rb +1 -1
- data/test/stub/railsapp/app/controllers/foo_controller.rb +4 -0
- data/test/stub/railsapp/app/helpers/application_helper.rb +0 -0
- data/test/stub/railsapp/config/boot.rb +0 -0
- data/test/stub/railsapp/config/database.yml +0 -0
- data/test/stub/railsapp/config/environment.rb +0 -0
- data/test/stub/railsapp/config/environments/development.rb +0 -0
- data/test/stub/railsapp/config/environments/production.rb +0 -0
- data/test/stub/railsapp/config/initializers/inflections.rb +0 -0
- data/test/stub/railsapp/config/initializers/mime_types.rb +0 -0
- data/test/stub/railsapp/config/routes.rb +0 -0
- data/test/stub/railsapp/public/useless.txt +0 -0
- data/test/stub/spawn_server.rb +3 -4
- data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
- data/test/support/apache2_controller.rb +57 -7
- data/test/support/tut.h +15 -0
- data/vendor/README +12 -0
- data/vendor/README_FOR_PACKAGERS +1 -0
- data/vendor/rack-0.9.1/AUTHORS +8 -0
- data/vendor/rack-0.9.1/COPYING +18 -0
- data/vendor/rack-0.9.1/ChangeLog +1423 -0
- data/vendor/rack-0.9.1/KNOWN-ISSUES +18 -0
- data/vendor/rack-0.9.1/README +306 -0
- data/vendor/rack-0.9.1/Rakefile +188 -0
- data/vendor/rack-0.9.1/SPEC +129 -0
- data/vendor/rack-0.9.1/lib/rack.rb +86 -0
- data/vendor/rack-0.9.1/lib/rack/adapter/camping.rb +22 -0
- data/vendor/rack-0.9.1/lib/rack/auth/abstract/handler.rb +28 -0
- data/vendor/rack-0.9.1/lib/rack/auth/abstract/request.rb +37 -0
- data/vendor/rack-0.9.1/lib/rack/auth/basic.rb +58 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/md5.rb +124 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/nonce.rb +51 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/params.rb +55 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/request.rb +40 -0
- data/vendor/rack-0.9.1/lib/rack/auth/openid.rb +438 -0
- data/vendor/rack-0.9.1/lib/rack/builder.rb +67 -0
- data/vendor/rack-0.9.1/lib/rack/cascade.rb +36 -0
- data/vendor/rack-0.9.1/lib/rack/commonlogger.rb +61 -0
- data/vendor/rack-0.9.1/lib/rack/conditionalget.rb +43 -0
- data/vendor/rack-0.9.1/lib/rack/content_length.rb +25 -0
- data/vendor/rack-0.9.1/lib/rack/deflater.rb +87 -0
- data/vendor/rack-0.9.1/lib/rack/directory.rb +150 -0
- data/vendor/rack-0.9.1/lib/rack/file.rb +85 -0
- data/vendor/rack-0.9.1/lib/rack/handler.rb +48 -0
- data/vendor/rack-0.9.1/lib/rack/handler/cgi.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/handler/evented_mongrel.rb +8 -0
- data/vendor/rack-0.9.1/lib/rack/handler/fastcgi.rb +86 -0
- data/vendor/rack-0.9.1/lib/rack/handler/lsws.rb +52 -0
- data/vendor/rack-0.9.1/lib/rack/handler/mongrel.rb +82 -0
- data/vendor/rack-0.9.1/lib/rack/handler/scgi.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
- data/vendor/rack-0.9.1/lib/rack/handler/thin.rb +15 -0
- data/vendor/rack-0.9.1/lib/rack/handler/webrick.rb +61 -0
- data/vendor/rack-0.9.1/lib/rack/head.rb +19 -0
- data/vendor/rack-0.9.1/lib/rack/lint.rb +465 -0
- data/vendor/rack-0.9.1/lib/rack/lobster.rb +65 -0
- data/vendor/rack-0.9.1/lib/rack/methodoverride.rb +27 -0
- data/vendor/rack-0.9.1/lib/rack/mime.rb +204 -0
- data/vendor/rack-0.9.1/lib/rack/mock.rb +160 -0
- data/vendor/rack-0.9.1/lib/rack/recursive.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/reloader.rb +64 -0
- data/vendor/rack-0.9.1/lib/rack/request.rb +218 -0
- data/vendor/rack-0.9.1/lib/rack/response.rb +171 -0
- data/vendor/rack-0.9.1/lib/rack/session/abstract/id.rb +153 -0
- data/vendor/rack-0.9.1/lib/rack/session/cookie.rb +89 -0
- data/vendor/rack-0.9.1/lib/rack/session/memcache.rb +97 -0
- data/vendor/rack-0.9.1/lib/rack/session/pool.rb +73 -0
- data/vendor/rack-0.9.1/lib/rack/showexceptions.rb +348 -0
- data/vendor/rack-0.9.1/lib/rack/showstatus.rb +106 -0
- data/vendor/rack-0.9.1/lib/rack/static.rb +38 -0
- data/vendor/rack-0.9.1/lib/rack/urlmap.rb +48 -0
- data/vendor/rack-0.9.1/lib/rack/utils.rb +347 -0
- metadata +1197 -1055
- data/doc/cxxapi/System_8h-source.html +0 -251
- data/doc/cxxapi/classDirectoryMapper-members.html +0 -38
- data/doc/cxxapi/classDirectoryMapper.html +0 -203
- data/doc/cxxapi/classPassenger_1_1Thread.html +0 -100
- data/doc/cxxapi/classboost_1_1this__thread_1_1disable__syscall__interruption.html +0 -46
- data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption-members.html +0 -33
- data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption.html +0 -44
- data/doc/cxxapi/namespacePassenger.html +0 -208
- data/doc/cxxapi/namespacePassenger_1_1InterruptableCalls.html +0 -43
- data/doc/cxxapi/namespacemembers.html +0 -70
- data/doc/cxxapi/namespacemembers_func.html +0 -66
- data/doc/cxxapi/namespacemembers_type.html +0 -46
- data/doc/cxxapi/namespaces.html +0 -35
- data/doc/rdoc/classes/Passenger.html +0 -136
- data/doc/rdoc/classes/Passenger/AbstractRequestHandler.html +0 -402
- data/doc/rdoc/classes/Passenger/SpawnManager.html +0 -379
- data/doc/rdoc/classes/Passenger/Utils.html +0 -578
- data/ext/apache2/System.h +0 -228
- data/lib/passenger/platform_info.rb +0 -302
- data/lib/passenger/templates/app_exited_during_initialization.html.erb +0 -19
- data/test/stub/apache2/httpd.conf +0 -75
- data/test/stub/rails_apps/foobar/config/environments/test.rb +0 -22
- data/test/stub/rails_apps/mycook/config/environments/test.rb +0 -22
- data/test/stub/railsapp/config/environments/test.rb +0 -22
- data/test/stub/railsapp2/config/environments/test.rb +0 -22
data/doc/cxxapi/annotated.html
CHANGED
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -34,25 +33,25 @@
|
|
34
33
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1BusyException.html">Passenger::BusyException</a></td><td class="indexvalue">The application pool is too busy and cannot fulfill a get() request </td></tr>
|
35
34
|
<tr><td class="indexkey"><a class="el" href="classClient.html">Client</a></td><td class="indexvalue">Represents a single ApplicationPool client, connected to this server </td></tr>
|
36
35
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1ConfigurationException.html">Passenger::ConfigurationException</a></td><td class="indexvalue">Thrown when an invalid configuration is given </td></tr>
|
37
|
-
<tr><td class="indexkey"><a class="el" href="
|
38
|
-
<tr><td class="indexkey"><a class="el" href="classboost_1_1this__thread_1_1disable__syscall__interruption.html">boost::this_thread::disable_syscall_interruption</a></td><td class="indexvalue">Create this struct on the stack to temporarily disable system call interruption, until the object goes out of scope </td></tr>
|
36
|
+
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td class="indexvalue">Utility class for determining URI-to-application directory mappings </td></tr>
|
39
37
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1DummySpawnManager.html">Passenger::DummySpawnManager</a></td><td class="indexvalue">A dummy <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> replacement for testing/debugging purposes </td></tr>
|
40
|
-
<tr><td class="indexkey"><a class="el" href="
|
38
|
+
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1FileChecker.html">Passenger::FileChecker</a></td><td class="indexvalue">Utility class for checking for file changes </td></tr>
|
41
39
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1FileNotFoundException.html">Passenger::FileNotFoundException</a></td><td class="indexvalue">Thrown when a certain file cannot be found </td></tr>
|
42
40
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1FileSystemException.html">Passenger::FileSystemException</a></td><td class="indexvalue">A filesystem error, as returned by the operating system </td></tr>
|
43
41
|
<tr><td class="indexkey"><a class="el" href="classHooks.html">Hooks</a></td><td class="indexvalue">Apache hook functions, wrapped in a class </td></tr>
|
44
42
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1IOException.html">Passenger::IOException</a></td><td class="indexvalue">Represents an error that occured during an I/O operation </td></tr>
|
45
43
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td class="indexvalue">Convenience class for I/O operations on file descriptors </td></tr>
|
46
|
-
<tr><td class="indexkey"><a class="el" href="
|
44
|
+
<tr><td class="indexkey"><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td class="indexvalue">This struct encapsulates information for <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> and for <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">SpawnManager::spawn()</a>, such as which application is to be spawned </td></tr>
|
45
|
+
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1RuntimeException.html">Passenger::RuntimeException</a></td><td class="indexvalue">A generic runtime exception </td></tr>
|
47
46
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1SpawnException.html">Passenger::SpawnException</a></td><td class="indexvalue">Thrown when <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> or <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> fails to spawn an application instance </td></tr>
|
48
47
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1SpawnManager.html">Passenger::SpawnManager</a></td><td class="indexvalue">Spawning of Ruby on Rails/Rack application instances </td></tr>
|
49
48
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1StandardApplicationPool.html">Passenger::StandardApplicationPool</a></td><td class="indexvalue">A standard implementation of <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> for single-process environments </td></tr>
|
50
49
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td class="indexvalue">Represents an error returned by a system call or a standard library call </td></tr>
|
50
|
+
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1SystemTime.html">Passenger::SystemTime</a></td><td class="indexvalue">This class allows one to obtain the system time, similar to time() </td></tr>
|
51
51
|
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1TempFile.html">Passenger::TempFile</a></td><td class="indexvalue">Represents a temporary file </td></tr>
|
52
|
-
<tr><td class="indexkey"><a class="el" href="classPassenger_1_1Thread.html">Passenger::Thread</a></td><td class="indexvalue"><a class="el" href="classPassenger_1_1Thread.html" title="Thread class with system call interruption support.">Thread</a> class with system call interruption support </td></tr>
|
53
52
|
</table>
|
54
53
|
</div>
|
55
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
54
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:33 2009 for Passenger by
|
56
55
|
<a href="http://www.doxygen.org/index.html">
|
57
56
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
58
57
|
</body>
|
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -28,7 +27,7 @@
|
|
28
27
|
<tr class="memlist"><td><a class="el" href="classClient.html#e625bb32c95bde75bfa4bdfdb8ee56db">Client</a>(Server &the_server, int connection)</td><td><a class="el" href="classClient.html">Client</a></td><td><code> [inline]</code></td></tr>
|
29
28
|
<tr class="memlist"><td><a class="el" href="classClient.html#c0a8dd9e23393c045064b109355a7daf">start</a>(const weak_ptr< Client > self)</td><td><a class="el" href="classClient.html">Client</a></td><td><code> [inline]</code></td></tr>
|
30
29
|
</table></div>
|
31
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
30
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:33 2009 for Passenger by
|
32
31
|
<a href="http://www.doxygen.org/index.html">
|
33
32
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
34
33
|
</body>
|
data/doc/cxxapi/classClient.html
CHANGED
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -110,7 +109,7 @@ Start the thread for handling the connection with this client.
|
|
110
109
|
<hr>The documentation for this class was generated from the following file:<ul>
|
111
110
|
<li>ApplicationPoolServerExecutable.cpp</ul>
|
112
111
|
</div>
|
113
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
112
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:33 2009 for Passenger by
|
114
113
|
<a href="http://www.doxygen.org/index.html">
|
115
114
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
116
115
|
</body>
|
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -25,8 +24,12 @@
|
|
25
24
|
</div>
|
26
25
|
<div class="contents">
|
27
26
|
<h1>Hooks Member List</h1>This is the complete list of members for <a class="el" href="classHooks.html">Hooks</a>, including all inherited members.<p><table>
|
27
|
+
<tr class="memlist"><td><a class="el" href="classHooks.html#64333270a19c93451c33dcb8fe1666de">saveOriginalFilename</a>(request_rec *r)</td><td><a class="el" href="classHooks.html">Hooks</a></td><td><code> [inline]</code></td></tr>
|
28
|
+
<tr class="memlist"><td><a class="el" href="classHooks.html#404c390fa2529611d1c5a15c0bd9f1c3">saveStateBeforeRewriteRules</a>(request_rec *r)</td><td><a class="el" href="classHooks.html">Hooks</a></td><td><code> [inline]</code></td></tr>
|
29
|
+
<tr class="memlist"><td><a class="el" href="classHooks.html#d6cca64be8a9075b4b92efdb4d9020a5">startBlockingModAutoIndex</a>(request_rec *r)</td><td><a class="el" href="classHooks.html">Hooks</a></td><td><code> [inline]</code></td></tr>
|
30
|
+
<tr class="memlist"><td><a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec">startBlockingModDir</a>(request_rec *r)</td><td><a class="el" href="classHooks.html">Hooks</a></td><td><code> [inline]</code></td></tr>
|
28
31
|
</table></div>
|
29
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
32
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:33 2009 for Passenger by
|
30
33
|
<a href="http://www.doxygen.org/index.html">
|
31
34
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
32
35
|
</body>
|
data/doc/cxxapi/classHooks.html
CHANGED
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -32,11 +31,122 @@
|
|
32
31
|
<a href="classHooks-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
|
33
32
|
Apache hook functions, wrapped in a class. <table border="0" cellpadding="0" cellspacing="0">
|
34
33
|
<tr><td></td></tr>
|
34
|
+
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
|
35
|
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classHooks.html#64333270a19c93451c33dcb8fe1666de">saveOriginalFilename</a> (request_rec *r)</td></tr>
|
36
|
+
|
37
|
+
<tr><td class="mdescLeft"> </td><td class="mdescRight">This is the hook method for the map_to_storage hook. <a href="#64333270a19c93451c33dcb8fe1666de"></a><br></td></tr>
|
38
|
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classHooks.html#404c390fa2529611d1c5a15c0bd9f1c3">saveStateBeforeRewriteRules</a> (request_rec *r)</td></tr>
|
39
|
+
|
40
|
+
<tr><td class="mdescLeft"> </td><td class="mdescRight">The default .htaccess provided by on Rails on Rails (that is, before version 2.1.0) has the following mod_rewrite rules in it:. <a href="#404c390fa2529611d1c5a15c0bd9f1c3"></a><br></td></tr>
|
41
|
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec">startBlockingModDir</a> (request_rec *r)</td></tr>
|
42
|
+
|
43
|
+
<tr><td class="mdescLeft"> </td><td class="mdescRight">mod_dir does the following: If r->filename is a directory, and the URI doesn't end with a slash, then it will redirect the browser to an URI with a slash. <a href="#e3091c57c95b2f8269f566099802f0ec"></a><br></td></tr>
|
44
|
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classHooks.html#d6cca64be8a9075b4b92efdb4d9020a5">startBlockingModAutoIndex</a> (request_rec *r)</td></tr>
|
45
|
+
|
46
|
+
<tr><td class="mdescLeft"> </td><td class="mdescRight">mod_autoindex will try to display a directory index for URIs that map to a directory. <a href="#d6cca64be8a9075b4b92efdb4d9020a5"></a><br></td></tr>
|
35
47
|
</table>
|
48
|
+
<hr><h2>Member Function Documentation</h2>
|
49
|
+
<a class="anchor" name="64333270a19c93451c33dcb8fe1666de"></a><!-- doxytag: member="Hooks::saveOriginalFilename" ref="64333270a19c93451c33dcb8fe1666de" args="(request_rec *r)" -->
|
50
|
+
<div class="memitem">
|
51
|
+
<div class="memproto">
|
52
|
+
<table class="memname">
|
53
|
+
<tr>
|
54
|
+
<td class="memname">int Hooks::saveOriginalFilename </td>
|
55
|
+
<td>(</td>
|
56
|
+
<td class="paramtype">request_rec * </td>
|
57
|
+
<td class="paramname"> <em>r</em> </td>
|
58
|
+
<td> ) </td>
|
59
|
+
<td width="100%"><code> [inline]</code></td>
|
60
|
+
</tr>
|
61
|
+
</table>
|
62
|
+
</div>
|
63
|
+
<div class="memdoc">
|
64
|
+
|
65
|
+
<p>
|
66
|
+
This is the hook method for the map_to_storage hook.
|
67
|
+
<p>
|
68
|
+
Apache's final map_to_storage hook method (defined in core.c) will do the following:<p>
|
69
|
+
If r->filename doesn't exist, then it will change the filename to the following form:<p>
|
70
|
+
A/B<p>
|
71
|
+
A is top-most directory that exists. B is the first filename piece that normally follows A. For example, suppose that a website's DocumentRoot is /website, on server <a href="http://test.com/.">http://test.com/.</a> Suppose that there's also a directory /website/images.<p>
|
72
|
+
If we access: then r->filename will be: <a href="http://test.com/foo/bar">http://test.com/foo/bar</a> /website/foo <a href="http://test.com/foo/bar/baz">http://test.com/foo/bar/baz</a> /website/foo <a href="http://test.com/images/foo/bar">http://test.com/images/foo/bar</a> /website/images/foo<p>
|
73
|
+
We obviously don't want this to happen because it'll interfere with our page cache file search code. So here we save the original value of r->filename so that we can use it later.
|
74
|
+
</div>
|
75
|
+
</div><p>
|
76
|
+
<a class="anchor" name="404c390fa2529611d1c5a15c0bd9f1c3"></a><!-- doxytag: member="Hooks::saveStateBeforeRewriteRules" ref="404c390fa2529611d1c5a15c0bd9f1c3" args="(request_rec *r)" -->
|
77
|
+
<div class="memitem">
|
78
|
+
<div class="memproto">
|
79
|
+
<table class="memname">
|
80
|
+
<tr>
|
81
|
+
<td class="memname">int Hooks::saveStateBeforeRewriteRules </td>
|
82
|
+
<td>(</td>
|
83
|
+
<td class="paramtype">request_rec * </td>
|
84
|
+
<td class="paramname"> <em>r</em> </td>
|
85
|
+
<td> ) </td>
|
86
|
+
<td width="100%"><code> [inline]</code></td>
|
87
|
+
</tr>
|
88
|
+
</table>
|
89
|
+
</div>
|
90
|
+
<div class="memdoc">
|
91
|
+
|
92
|
+
<p>
|
93
|
+
The default .htaccess provided by on Rails on Rails (that is, before version 2.1.0) has the following mod_rewrite rules in it:.
|
94
|
+
<p>
|
95
|
+
RewriteEngine on RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.cgi [QSA,L]<p>
|
96
|
+
As a result, all requests that do not map to a filename will be redirected to dispatch.cgi (or dispatch.fcgi, if the user so specified). We don't want that to happen, so before mod_rewrite applies its rules, we save the current state. After mod_rewrite has applied its rules, undoRedirectionToDispatchCgi() will check whether mod_rewrite attempted to perform an internal redirection to dispatch.(f)cgi. If so, then it will revert the state to the way it was before mod_rewrite took place.
|
97
|
+
</div>
|
98
|
+
</div><p>
|
99
|
+
<a class="anchor" name="e3091c57c95b2f8269f566099802f0ec"></a><!-- doxytag: member="Hooks::startBlockingModDir" ref="e3091c57c95b2f8269f566099802f0ec" args="(request_rec *r)" -->
|
100
|
+
<div class="memitem">
|
101
|
+
<div class="memproto">
|
102
|
+
<table class="memname">
|
103
|
+
<tr>
|
104
|
+
<td class="memname">int Hooks::startBlockingModDir </td>
|
105
|
+
<td>(</td>
|
106
|
+
<td class="paramtype">request_rec * </td>
|
107
|
+
<td class="paramname"> <em>r</em> </td>
|
108
|
+
<td> ) </td>
|
109
|
+
<td width="100%"><code> [inline]</code></td>
|
110
|
+
</tr>
|
111
|
+
</table>
|
112
|
+
</div>
|
113
|
+
<div class="memdoc">
|
114
|
+
|
115
|
+
<p>
|
116
|
+
mod_dir does the following: If r->filename is a directory, and the URI doesn't end with a slash, then it will redirect the browser to an URI with a slash.
|
117
|
+
<p>
|
118
|
+
For example, if you go to <a href="http://foo.com/images,">http://foo.com/images,</a> then it will redirect you to <a href="http://foo.com/images/.">http://foo.com/images/.</a><p>
|
119
|
+
This behavior is undesired. Suppose that there is an ImagesController, and there's also a 'public/images' folder used for storing page cache files. Then we don't want mod_dir to perform the redirection.<p>
|
120
|
+
So in <a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec" title="mod_dir does the following: If r->filename is a directory, and the URI doesn't...">startBlockingModDir()</a>, we temporarily change some fields in the request structure in order to block mod_dir. In endBlockingModDir() we revert those fields to their old value.
|
121
|
+
</div>
|
122
|
+
</div><p>
|
123
|
+
<a class="anchor" name="d6cca64be8a9075b4b92efdb4d9020a5"></a><!-- doxytag: member="Hooks::startBlockingModAutoIndex" ref="d6cca64be8a9075b4b92efdb4d9020a5" args="(request_rec *r)" -->
|
124
|
+
<div class="memitem">
|
125
|
+
<div class="memproto">
|
126
|
+
<table class="memname">
|
127
|
+
<tr>
|
128
|
+
<td class="memname">int Hooks::startBlockingModAutoIndex </td>
|
129
|
+
<td>(</td>
|
130
|
+
<td class="paramtype">request_rec * </td>
|
131
|
+
<td class="paramname"> <em>r</em> </td>
|
132
|
+
<td> ) </td>
|
133
|
+
<td width="100%"><code> [inline]</code></td>
|
134
|
+
</tr>
|
135
|
+
</table>
|
136
|
+
</div>
|
137
|
+
<div class="memdoc">
|
138
|
+
|
139
|
+
<p>
|
140
|
+
mod_autoindex will try to display a directory index for URIs that map to a directory.
|
141
|
+
<p>
|
142
|
+
This is undesired because of page caching semantics. Suppose that a Rails application has an ImagesController which has page caching enabled, and thus also a 'public/images' directory. When the visitor visits /images we'll want the request to be forwarded to the Rails application, instead of displaying a directory index.<p>
|
143
|
+
So in this hook method, we temporarily change some fields in the request structure in order to block mod_autoindex. In endBlockingModAutoIndex(), we restore the request structure to its former state.
|
144
|
+
</div>
|
145
|
+
</div><p>
|
36
146
|
<hr>The documentation for this class was generated from the following file:<ul>
|
37
147
|
<li>Hooks.cpp</ul>
|
38
148
|
</div>
|
39
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
149
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:33 2009 for Passenger by
|
40
150
|
<a href="http://www.doxygen.org/index.html">
|
41
151
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
42
152
|
</body>
|
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -25,13 +24,13 @@
|
|
25
24
|
</div>
|
26
25
|
<div class="contents">
|
27
26
|
<h1>Passenger::Application Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1Application.html">Passenger::Application</a>, including all inherited members.<p><table>
|
28
|
-
<tr class="memlist"><td><a class="el" href="classPassenger_1_1Application.html#
|
27
|
+
<tr class="memlist"><td><a class="el" href="classPassenger_1_1Application.html#0ae83471a8c991b8cc8d460b44d237ea">Application</a>(const string &theAppRoot, pid_t pid, const string &listenSocketName, const string &listenSocketType, int ownerPipe)</td><td><a class="el" href="classPassenger_1_1Application.html">Passenger::Application</a></td><td><code> [inline]</code></td></tr>
|
29
28
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1Application.html#34636f796ff3924ad5ec142aaa581379">connect</a>(const function< void()> &closeCallback) const </td><td><a class="el" href="classPassenger_1_1Application.html">Passenger::Application</a></td><td><code> [inline]</code></td></tr>
|
30
29
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1Application.html#0a0665852e7ebc8fb8ab0772fa90bc56">getAppRoot</a>() const </td><td><a class="el" href="classPassenger_1_1Application.html">Passenger::Application</a></td><td><code> [inline]</code></td></tr>
|
31
30
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1Application.html#94d2cce1c2c1d3441325f1498a22bf02">getPid</a>() const </td><td><a class="el" href="classPassenger_1_1Application.html">Passenger::Application</a></td><td><code> [inline]</code></td></tr>
|
32
31
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">SessionPtr</a> typedef</td><td><a class="el" href="classPassenger_1_1Application.html">Passenger::Application</a></td><td></td></tr>
|
33
32
|
</table></div>
|
34
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
33
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by
|
35
34
|
<a href="http://www.doxygen.org/index.html">
|
36
35
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
37
36
|
</body>
|
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -22,7 +21,7 @@
|
|
22
21
|
<li><a href="functions.html"><span>Class Members</span></a></li>
|
23
22
|
</ul>
|
24
23
|
</div>
|
25
|
-
<div class="navpath"><
|
24
|
+
<div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1Application.html">Application</a>
|
26
25
|
</div>
|
27
26
|
</div>
|
28
27
|
<div class="contents">
|
@@ -41,9 +40,9 @@ Represents a single Ruby on Rails or Rack application instance. <table border="0
|
|
41
40
|
|
42
41
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenient alias for <a class="el" href="classPassenger_1_1Application_1_1Session.html" title="Represents the life time of a single request/response pair of a Ruby on Rails or...">Session</a> smart pointer. <a href="#d14f673494991460b16246a527ad8ad9"></a><br></td></tr>
|
43
42
|
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
|
44
|
-
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application.html#
|
43
|
+
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application.html#0ae83471a8c991b8cc8d460b44d237ea">Application</a> (const string &theAppRoot, pid_t pid, const string &listenSocketName, const string &listenSocketType, int ownerPipe)</td></tr>
|
45
44
|
|
46
|
-
<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct a new <a class="el" href="classPassenger_1_1Application.html" title="Represents a single Ruby on Rails or Rack application instance.">Application</a> object. <a href="#
|
45
|
+
<tr><td class="mdescLeft"> </td><td class="mdescRight">Construct a new <a class="el" href="classPassenger_1_1Application.html" title="Represents a single Ruby on Rails or Rack application instance.">Application</a> object. <a href="#0ae83471a8c991b8cc8d460b44d237ea"></a><br></td></tr>
|
47
46
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">string </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application.html#0a0665852e7ebc8fb8ab0772fa90bc56">getAppRoot</a> () const </td></tr>
|
48
47
|
|
49
48
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the application root for this application. <a href="#0a0665852e7ebc8fb8ab0772fa90bc56"></a><br></td></tr>
|
@@ -78,7 +77,7 @@ Convenient alias for <a class="el" href="classPassenger_1_1Application_1_1Sessio
|
|
78
77
|
</div>
|
79
78
|
</div><p>
|
80
79
|
<hr><h2>Constructor & Destructor Documentation</h2>
|
81
|
-
<a class="anchor" name="
|
80
|
+
<a class="anchor" name="0ae83471a8c991b8cc8d460b44d237ea"></a><!-- doxytag: member="Passenger::Application::Application" ref="0ae83471a8c991b8cc8d460b44d237ea" args="(const string &theAppRoot, pid_t pid, const string &listenSocketName, const string &listenSocketType, int ownerPipe)" -->
|
82
81
|
<div class="memitem">
|
83
82
|
<div class="memproto">
|
84
83
|
<table class="memname">
|
@@ -103,8 +102,8 @@ Convenient alias for <a class="el" href="classPassenger_1_1Application_1_1Sessio
|
|
103
102
|
<tr>
|
104
103
|
<td class="paramkey"></td>
|
105
104
|
<td></td>
|
106
|
-
<td class="paramtype">
|
107
|
-
<td class="paramname"> <em>
|
105
|
+
<td class="paramtype">const string & </td>
|
106
|
+
<td class="paramname"> <em>listenSocketType</em>, </td>
|
108
107
|
</tr>
|
109
108
|
<tr>
|
110
109
|
<td class="paramkey"></td>
|
@@ -129,7 +128,7 @@ Construct a new <a class="el" href="classPassenger_1_1Application.html" title="R
|
|
129
128
|
<tr><td valign="top"></td><td valign="top"><em>theAppRoot</em> </td><td>The application root of an application. In case of a Rails application, this is the folder that contains 'app/', 'public/', 'config/', etc. This must be a valid directory, but the path does not have to be absolute. </td></tr>
|
130
129
|
<tr><td valign="top"></td><td valign="top"><em>pid</em> </td><td>The process ID of this application instance. </td></tr>
|
131
130
|
<tr><td valign="top"></td><td valign="top"><em>listenSocketName</em> </td><td>The name of the listener socket of this application instance. </td></tr>
|
132
|
-
<tr><td valign="top"></td><td valign="top"><em>
|
131
|
+
<tr><td valign="top"></td><td valign="top"><em>listenSocketType</em> </td><td>The type of the listener socket, e.g. "unix" for Unix domain sockets. </td></tr>
|
133
132
|
<tr><td valign="top"></td><td valign="top"><em>ownerPipe</em> </td><td>The owner pipe of this application instance. </td></tr>
|
134
133
|
</table>
|
135
134
|
</dl>
|
@@ -222,7 +221,7 @@ You <b>must</b> close a session when you no longer need if. If you call <a class
|
|
222
221
|
<hr>The documentation for this class was generated from the following file:<ul>
|
223
222
|
<li><a class="el" href="Application_8h-source.html">Application.h</a></ul>
|
224
223
|
</div>
|
225
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
224
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by
|
226
225
|
<a href="http://www.doxygen.org/index.html">
|
227
226
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
228
227
|
</body>
|
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -26,15 +25,16 @@
|
|
26
25
|
<div class="contents">
|
27
26
|
<h1>Passenger::ApplicationPool Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a>, including all inherited members.<p><table>
|
28
27
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">clear</a>()=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
|
29
|
-
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#
|
28
|
+
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#c811d261345fcf579f049a2377b4b56b">connected</a>() const </td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [inline, virtual]</code></td></tr>
|
29
|
+
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67">get</a>(const PoolOptions &options)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
|
30
|
+
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#b5cc9a7f0c1e7acb9d5815d4420e25ea">get</a>(const string &appRoot)</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [inline, virtual]</code></td></tr>
|
30
31
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#06d1eae044d4d761ce77cf09049df8c8">getActive</a>() const =0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
|
31
32
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#93b0277beb510855f85fee5de5c369bb">getCount</a>() const =0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
|
32
33
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">getSpawnServerPid</a>() const =0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
|
33
34
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">setMax</a>(unsigned int max)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
|
34
35
|
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">setMaxPerApp</a>(unsigned int max)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
|
35
|
-
<tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#b5faf64421313e1387c187f80b95d0e7">setUseGlobalQueue</a>(bool value)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
|
36
36
|
</table></div>
|
37
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
37
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by
|
38
38
|
<a href="http://www.doxygen.org/index.html">
|
39
39
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
40
40
|
</body>
|
@@ -10,7 +10,6 @@
|
|
10
10
|
<ul>
|
11
11
|
<li><a href="main.html"><span>Main Page</span></a></li>
|
12
12
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
13
|
-
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
14
13
|
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
|
15
14
|
<li><a href="files.html"><span>Files</span></a></li>
|
16
15
|
</ul>
|
@@ -22,7 +21,7 @@
|
|
22
21
|
<li><a href="functions.html"><span>Class Members</span></a></li>
|
23
22
|
</ul>
|
24
23
|
</div>
|
25
|
-
<div class="navpath"><
|
24
|
+
<div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1ApplicationPool.html">ApplicationPool</a>
|
26
25
|
</div>
|
27
26
|
</div>
|
28
27
|
<div class="contents">
|
@@ -68,17 +67,24 @@ Normally, one would use <a class="el" href="classPassenger_1_1SpawnManager.html"
|
|
68
67
|
<span class="comment">// the previous session is closed.</span>
|
69
68
|
session = app->connect(<span class="stringliteral">"/home/webapps/bar"</span>)
|
70
69
|
</pre></div><p>
|
71
|
-
Internally, <a class="el" href="classPassenger_1_1ApplicationPool.html#
|
70
|
+
Internally, <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> will keep spawned applications instances in memory, and reuse them if possible. It wil* <dl compact><dt><b>Exceptions:</b></dt><dd>
|
72
71
|
<table border="0" cellspacing="2" cellpadding="0">
|
73
|
-
<tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>try to keep spawning to a minimum. Furthermore, if an application instance hasn't been used for a while, it will be automatically shutdown in order to save memory. Restart requests are honored: if an application has the file 'restart.txt' in its 'tmp' folder, then <a class="el" href="classPassenger_1_1ApplicationPool.html#
|
72
|
+
<tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>try to keep spawning to a minimum. Furthermore, if an application instance hasn't been used for a while, it will be automatically shutdown in order to save memory. Restart requests are honored: if an application has the file 'restart.txt' in its 'tmp' folder, then <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">get()</a> will shutdown existing instances of that application and spawn a new instance (this is useful when a new version of an application has been deployed). And finally, one can set a hard limit on the maximum number of applications instances that may be spawned (see <a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794" title="Set a hard limit on the number of application instances that this ApplicationPool...">ApplicationPool::setMax()</a>).</td></tr>
|
74
73
|
</table>
|
75
74
|
</dl>
|
76
75
|
Note that <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> is just an interface (i.e. a pure virtual class). For concrete classes, see <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> and <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a>. The exact pooling algorithm depends on the implementation class. <table border="0" cellpadding="0" cellspacing="0">
|
77
76
|
<tr><td></td></tr>
|
78
77
|
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
|
79
|
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual
|
78
|
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#c811d261345fcf579f049a2377b4b56b">connected</a> () const </td></tr>
|
80
79
|
|
81
|
-
<tr><td class="mdescLeft"> </td><td class="mdescRight">
|
80
|
+
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object is still connected to the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server. <a href="#c811d261345fcf579f049a2377b4b56b"></a><br></td></tr>
|
81
|
+
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Application::SessionPtr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67">get</a> (const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &options)=0</td></tr>
|
82
|
+
|
83
|
+
<tr><td class="mdescLeft"> </td><td class="mdescRight">Open a new session with the application specified by <code><a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3" title="The root directory of the application to spawn.">PoolOptions.appRoot</a></code>. <a href="#0b206eb4eb2869423d75c042a0653c67"></a><br></td></tr>
|
84
|
+
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5cc9a7f0c1e7acb9d5815d4420e25ea"></a><!-- doxytag: member="Passenger::ApplicationPool::get" ref="b5cc9a7f0c1e7acb9d5815d4420e25ea" args="(const string &appRoot)" -->
|
85
|
+
virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Application::SessionPtr</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#b5cc9a7f0c1e7acb9d5815d4420e25ea">get</a> (const string &appRoot)</td></tr>
|
86
|
+
|
87
|
+
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience shortcut for calling <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">get()</a> with default spawn options. <br></td></tr>
|
82
88
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">clear</a> ()=0</td></tr>
|
83
89
|
|
84
90
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Clear all application instances that are currently in the pool. <a href="#74db4d7a693d45b16320b2296a0c0997"></a><br></td></tr>
|
@@ -94,77 +100,57 @@ Note that <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A p
|
|
94
100
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">setMaxPerApp</a> (unsigned int max)=0</td></tr>
|
95
101
|
|
96
102
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set a hard limit on the number of application instances that a single application may spawn in this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>. <a href="#b0437434c79b5444ac0faf768f1410e8"></a><br></td></tr>
|
97
|
-
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#b5faf64421313e1387c187f80b95d0e7">setUseGlobalQueue</a> (bool value)=0</td></tr>
|
98
|
-
|
99
|
-
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets whether to use a global queue instead of a per-backend process queue. <a href="#b5faf64421313e1387c187f80b95d0e7"></a><br></td></tr>
|
100
103
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual pid_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">getSpawnServerPid</a> () const =0</td></tr>
|
101
104
|
|
102
105
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the process ID of the spawn server that is used. <a href="#d9149c3b434ef8e18fd15a77af1a6c2c"></a><br></td></tr>
|
103
106
|
</table>
|
104
107
|
<hr><h2>Member Function Documentation</h2>
|
105
|
-
<a class="anchor" name="
|
108
|
+
<a class="anchor" name="c811d261345fcf579f049a2377b4b56b"></a><!-- doxytag: member="Passenger::ApplicationPool::connected" ref="c811d261345fcf579f049a2377b4b56b" args="() const " -->
|
106
109
|
<div class="memitem">
|
107
110
|
<div class="memproto">
|
108
111
|
<table class="memname">
|
109
112
|
<tr>
|
110
|
-
<td class="memname">virtual
|
113
|
+
<td class="memname">virtual bool Passenger::ApplicationPool::connected </td>
|
111
114
|
<td>(</td>
|
112
|
-
<td class="
|
113
|
-
<td
|
114
|
-
|
115
|
-
<tr>
|
116
|
-
<td class="paramkey"></td>
|
117
|
-
<td></td>
|
118
|
-
<td class="paramtype">bool </td>
|
119
|
-
<td class="paramname"> <em>lowerPrivilege</em> = <code>true</code>, </td>
|
120
|
-
</tr>
|
121
|
-
<tr>
|
122
|
-
<td class="paramkey"></td>
|
123
|
-
<td></td>
|
124
|
-
<td class="paramtype">const string & </td>
|
125
|
-
<td class="paramname"> <em>lowestUser</em> = <code>"nobody"</code>, </td>
|
126
|
-
</tr>
|
127
|
-
<tr>
|
128
|
-
<td class="paramkey"></td>
|
129
|
-
<td></td>
|
130
|
-
<td class="paramtype">const string & </td>
|
131
|
-
<td class="paramname"> <em>environment</em> = <code>"production"</code>, </td>
|
132
|
-
</tr>
|
133
|
-
<tr>
|
134
|
-
<td class="paramkey"></td>
|
135
|
-
<td></td>
|
136
|
-
<td class="paramtype">const string & </td>
|
137
|
-
<td class="paramname"> <em>spawnMethod</em> = <code>"smart"</code>, </td>
|
138
|
-
</tr>
|
139
|
-
<tr>
|
140
|
-
<td class="paramkey"></td>
|
141
|
-
<td></td>
|
142
|
-
<td class="paramtype">const string & </td>
|
143
|
-
<td class="paramname"> <em>appType</em> = <code>"rails"</code></td><td> </td>
|
115
|
+
<td class="paramname"> </td>
|
116
|
+
<td> ) </td>
|
117
|
+
<td width="100%"> const<code> [inline, virtual]</code></td>
|
144
118
|
</tr>
|
119
|
+
</table>
|
120
|
+
</div>
|
121
|
+
<div class="memdoc">
|
122
|
+
|
123
|
+
<p>
|
124
|
+
Checks whether this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object is still connected to the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server.
|
125
|
+
<p>
|
126
|
+
If that's not the case, then one should reconnect to the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server.<p>
|
127
|
+
This method is only meaningful for instances of type ApplicationPoolServer::Client. The default implementation always returns true.
|
128
|
+
</div>
|
129
|
+
</div><p>
|
130
|
+
<a class="anchor" name="0b206eb4eb2869423d75c042a0653c67"></a><!-- doxytag: member="Passenger::ApplicationPool::get" ref="0b206eb4eb2869423d75c042a0653c67" args="(const PoolOptions &options)=0" -->
|
131
|
+
<div class="memitem">
|
132
|
+
<div class="memproto">
|
133
|
+
<table class="memname">
|
145
134
|
<tr>
|
146
|
-
<td
|
147
|
-
<td>
|
148
|
-
<td
|
135
|
+
<td class="memname">virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Application::SessionPtr</a> Passenger::ApplicationPool::get </td>
|
136
|
+
<td>(</td>
|
137
|
+
<td class="paramtype">const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> & </td>
|
138
|
+
<td class="paramname"> <em>options</em> </td>
|
139
|
+
<td> ) </td>
|
140
|
+
<td width="100%"><code> [pure virtual]</code></td>
|
149
141
|
</tr>
|
150
142
|
</table>
|
151
143
|
</div>
|
152
144
|
<div class="memdoc">
|
153
145
|
|
154
146
|
<p>
|
155
|
-
Open a new session with the application specified by <code>appRoot</code>.
|
147
|
+
Open a new session with the application specified by <code><a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3" title="The root directory of the application to spawn.">PoolOptions.appRoot</a></code>.
|
156
148
|
<p>
|
157
149
|
See the class description for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>, as well as <a class="el" href="classPassenger_1_1Application.html#34636f796ff3924ad5ec142aaa581379" title="Connect to this application instance with the purpose of sending a request to the...">Application::connect()</a>, on how to use the returned session object.<p>
|
158
150
|
Internally, this method may either spawn a new application instance, or use an existing one.<p>
|
159
|
-
If <code>lowerPrivilege</code> is true, then any newly spawned application instances will have lower privileges. See <a class="el" href="classPassenger_1_1SpawnManager.html#fdefbbbad39833912ae7f9f106083099" title="Construct a new SpawnManager.">SpawnManager::SpawnManager()</a>'s description of <code>lowerPrivilege</code> and <code>lowestUser</code> for details.<p>
|
160
151
|
<dl compact><dt><b>Parameters:</b></dt><dd>
|
161
152
|
<table border="0" cellspacing="2" cellpadding="0">
|
162
|
-
<tr><td valign="top"></td><td valign="top"><em>
|
163
|
-
<tr><td valign="top"></td><td valign="top"><em>lowerPrivilege</em> </td><td>Whether to lower the application's privileges. </td></tr>
|
164
|
-
<tr><td valign="top"></td><td valign="top"><em>lowestUser</em> </td><td>The user to fallback to if lowering privilege fails. </td></tr>
|
165
|
-
<tr><td valign="top"></td><td valign="top"><em>environment</em> </td><td>The RAILS_ENV/RACK_ENV environment that should be used. May not be empty. </td></tr>
|
166
|
-
<tr><td valign="top"></td><td valign="top"><em>spawnMethod</em> </td><td>The spawn method to use. Either "smart" or "conservative". See the Ruby class <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> for details. </td></tr>
|
167
|
-
<tr><td valign="top"></td><td valign="top"><em>appType</em> </td><td>The application type. Either "rails" or "rack". </td></tr>
|
153
|
+
<tr><td valign="top"></td><td valign="top"><em>options</em> </td><td>An object containing information on which application to open a session with, as well as spawning details. Spawning details will be used if the pool decides that spawning a new application instance is necessary. See <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> and <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> for details. </td></tr>
|
168
154
|
</table>
|
169
155
|
</dl>
|
170
156
|
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A session object. </dd></dl>
|
@@ -178,7 +164,7 @@ If <code>lowerPrivilege</code> is true, then any newly spawned application insta
|
|
178
164
|
</dl>
|
179
165
|
<dl class="note" compact><dt><b>Note:</b></dt><dd>Applications are uniquely identified with the application root string. So although <code>appRoot</code> does not have to be absolute, it should be. If one calls <code>get("/home/foo")</code> and <code>get("/home/../home/foo")</code>, then <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> will think they're 2 different applications, and thus will spawn 2 application instances. </dd></dl>
|
180
166
|
|
181
|
-
<p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#
|
167
|
+
<p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#ffc8f3ef8b1d925d203794d191d7fef4">Passenger::StandardApplicationPool</a>.</p>
|
182
168
|
|
183
169
|
</div>
|
184
170
|
</div><p>
|
@@ -299,31 +285,6 @@ The exact behavior depends on the used algorithm, and is not specified by these
|
|
299
285
|
It is allowed to set a limit lower than the current number of spawned applications.
|
300
286
|
<p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#3bafcda8d880f70561ad8a9da16e26ef">Passenger::StandardApplicationPool</a>.</p>
|
301
287
|
|
302
|
-
</div>
|
303
|
-
</div><p>
|
304
|
-
<a class="anchor" name="b5faf64421313e1387c187f80b95d0e7"></a><!-- doxytag: member="Passenger::ApplicationPool::setUseGlobalQueue" ref="b5faf64421313e1387c187f80b95d0e7" args="(bool value)=0" -->
|
305
|
-
<div class="memitem">
|
306
|
-
<div class="memproto">
|
307
|
-
<table class="memname">
|
308
|
-
<tr>
|
309
|
-
<td class="memname">virtual void Passenger::ApplicationPool::setUseGlobalQueue </td>
|
310
|
-
<td>(</td>
|
311
|
-
<td class="paramtype">bool </td>
|
312
|
-
<td class="paramname"> <em>value</em> </td>
|
313
|
-
<td> ) </td>
|
314
|
-
<td width="100%"><code> [pure virtual]</code></td>
|
315
|
-
</tr>
|
316
|
-
</table>
|
317
|
-
</div>
|
318
|
-
<div class="memdoc">
|
319
|
-
|
320
|
-
<p>
|
321
|
-
Sets whether to use a global queue instead of a per-backend process queue.
|
322
|
-
<p>
|
323
|
-
If enabled, when all backend processes are active, <a class="el" href="classPassenger_1_1ApplicationPool.html#9f486e1c0a4187f7fdb95d1382a85282" title="Open a new session with the application specified by appRoot.">get()</a> will wait until there's at least one backend process that's idle, instead of queuing the request into a random process's private queue. This is especially useful if a website has one or more long-running requests.<p>
|
324
|
-
Defaults to false.
|
325
|
-
<p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#e9c699b56f3a755ab10269c7fe585c2d">Passenger::StandardApplicationPool</a>.</p>
|
326
|
-
|
327
288
|
</div>
|
328
289
|
</div><p>
|
329
290
|
<a class="anchor" name="d9149c3b434ef8e18fd15a77af1a6c2c"></a><!-- doxytag: member="Passenger::ApplicationPool::getSpawnServerPid" ref="d9149c3b434ef8e18fd15a77af1a6c2c" args="() const =0" -->
|
@@ -352,7 +313,7 @@ This method exposes an implementation detail. It is used by unit tests to verify
|
|
352
313
|
<hr>The documentation for this class was generated from the following file:<ul>
|
353
314
|
<li><a class="el" href="ApplicationPool_8h-source.html">ApplicationPool.h</a></ul>
|
354
315
|
</div>
|
355
|
-
<hr size="1"><address style="text-align: right;"><small>Generated on
|
316
|
+
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by
|
356
317
|
<a href="http://www.doxygen.org/index.html">
|
357
318
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
|
358
319
|
</body>
|