passenger 3.0.7 → 3.0.8
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/NEWS +27 -0
- data/README +1 -1
- data/bin/passenger-install-nginx-module +3 -1
- data/build/config.rb +2 -1
- data/build/cxx_tests.rb +7 -3
- data/build/documentation.rb +5 -40
- data/build/nginx.rb +0 -1
- data/build/packaging.rb +0 -6
- data/build/rake_extensions.rb +5 -0
- data/doc/Architectural overview.html +344 -77
- data/doc/Security of user switching support.html +338 -71
- data/doc/Users guide Apache with comments.html +4830 -0
- data/doc/Users guide Apache.html +695 -428
- data/doc/Users guide Apache.idmap.txt +80 -0
- data/doc/Users guide Apache.txt +5 -5
- data/doc/Users guide Nginx.html +591 -313
- data/doc/Users guide Nginx.txt +9 -3
- data/doc/Users guide Standalone.html +344 -77
- data/ext/boost/src/pthread/thread.cpp +1 -1
- data/ext/common/AccountsDatabase.h +1 -1
- data/ext/common/Constants.h +2 -2
- data/ext/common/Logging.h +2 -1
- data/ext/common/LoggingAgent/FilterSupport.h +107 -3
- data/ext/common/Session.h +1 -1
- data/ext/common/Utils.cpp +2 -0
- data/ext/common/Utils/Dechunker.h +232 -0
- data/ext/common/Utils/HttpHeaderBufferer.h +165 -0
- data/ext/common/Utils/StrIntUtils.cpp +51 -15
- data/ext/common/Utils/StrIntUtils.h +3 -0
- data/ext/common/Utils/StreamBoyerMooreHorspool.h +506 -0
- data/ext/nginx/Configuration.c +36 -282
- data/ext/nginx/ContentHandler.c +17 -0
- data/ext/nginx/HelperAgent.cpp +397 -39
- data/ext/oxt/tracable_exception.cpp +3 -1
- data/ext/ruby/extconf.rb +1 -0
- data/ext/ruby/passenger_native_support.c +3 -0
- data/helper-scripts/prespawn +113 -31
- data/lib/phusion_passenger.rb +2 -2
- data/lib/phusion_passenger/standalone/runtime_installer.rb +3 -2
- data/lib/phusion_passenger/standalone/start_command.rb +12 -12
- data/test/cxx/DechunkerTest.cpp +216 -0
- data/test/cxx/FilterSupportTest.cpp +31 -4
- data/test/cxx/HttpHeaderBuffererTest.cpp +203 -0
- data/test/cxx/UtilsTest.cpp +46 -3
- data/test/integration_tests/hello_world_rack_spec.rb +7 -0
- data/test/stub/rack/config.ru +6 -1
- data/test/stub/rails_apps/1.2/empty/public/dispatch.cgi +1 -1
- data/test/stub/rails_apps/1.2/empty/public/dispatch.fcgi +1 -1
- data/test/stub/rails_apps/1.2/empty/public/dispatch.rb +1 -1
- data/test/stub/rails_apps/2.0/empty/public/dispatch.cgi +1 -1
- data/test/stub/rails_apps/2.0/empty/public/dispatch.fcgi +1 -1
- data/test/stub/rails_apps/2.0/empty/public/dispatch.rb +1 -1
- data/test/stub/rails_apps/2.2/empty/public/dispatch.cgi +1 -1
- data/test/stub/rails_apps/2.2/empty/public/dispatch.fcgi +1 -1
- data/test/stub/rails_apps/2.2/empty/public/dispatch.rb +1 -1
- metadata +20 -403
- data/doc/Doxyfile +0 -241
- data/doc/cxxapi/AbstractSpawnManager_8h_source.html +0 -141
- data/doc/cxxapi/Account_8h_source.html +0 -206
- data/doc/cxxapi/AccountsDatabase_8h_source.html +0 -161
- data/doc/cxxapi/AgentBase_8h_source.html +0 -70
- data/doc/cxxapi/AgentsStarter_8h_source.html +0 -112
- data/doc/cxxapi/BCrypt_8h_source.html +0 -104
- data/doc/cxxapi/Blowfish_8h_source.html +0 -134
- data/doc/cxxapi/Bucket_8h_source.html +0 -118
- data/doc/cxxapi/Constants_8h_source.html +0 -79
- data/doc/cxxapi/ContentHandler_8h_source.html +0 -95
- data/doc/cxxapi/DirectoryMapper_8h_source.html +0 -311
- data/doc/cxxapi/EventedClient_8h_source.html +0 -733
- data/doc/cxxapi/EventedMessageServer_8h_source.html +0 -358
- data/doc/cxxapi/EventedServer_8h_source.html +0 -326
- data/doc/cxxapi/Exceptions_8h_source.html +0 -393
- data/doc/cxxapi/FileDescriptor_8h_source.html +0 -324
- data/doc/cxxapi/Hooks_8h_source.html +0 -76
- data/doc/cxxapi/HttpStatusExtractor_8h_source.html +0 -382
- data/doc/cxxapi/IniFile_8h_source.html +0 -527
- data/doc/cxxapi/Logging_8h_source.html +0 -796
- data/doc/cxxapi/MessageChannel_8h_source.html +0 -776
- data/doc/cxxapi/MessageClient_8h_source.html +0 -328
- data/doc/cxxapi/MessageReadersWriters_8h_source.html +0 -539
- data/doc/cxxapi/MessageServer_8h_source.html +0 -612
- data/doc/cxxapi/PoolOptions_8h_source.html +0 -549
- data/doc/cxxapi/Process_8h_source.html +0 -286
- data/doc/cxxapi/RandomGenerator_8h_source.html +0 -191
- data/doc/cxxapi/ResourceLocator_8h_source.html +0 -166
- data/doc/cxxapi/SafeLibev_8h_source.html +0 -180
- data/doc/cxxapi/ScgiRequestParser_8h_source.html +0 -406
- data/doc/cxxapi/ServerInstanceDir_8h_source.html +0 -378
- data/doc/cxxapi/Session_8h_source.html +0 -501
- data/doc/cxxapi/SpawnManager_8h_source.html +0 -647
- data/doc/cxxapi/StaticContentHandler_8h_source.html +0 -69
- data/doc/cxxapi/StaticString_8h_source.html +0 -329
- data/doc/cxxapi/StringListCreator_8h_source.html +0 -114
- data/doc/cxxapi/Utils_8h_source.html +0 -469
- data/doc/cxxapi/annotated.html +0 -87
- data/doc/cxxapi/apache2_2Configuration_8h_source.html +0 -82
- data/doc/cxxapi/classAgentWatcher-members.html +0 -54
- data/doc/cxxapi/classAgentWatcher.html +0 -419
- data/doc/cxxapi/classClient-members.html +0 -38
- data/doc/cxxapi/classClient.html +0 -123
- data/doc/cxxapi/classHooks-members.html +0 -40
- data/doc/cxxapi/classHooks.html +0 -153
- data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +0 -40
- data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +0 -187
- data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1ArgumentException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1ArgumentException.html +0 -56
- data/doc/cxxapi/classPassenger_1_1ArrayMessage-members.html +0 -37
- data/doc/cxxapi/classPassenger_1_1ArrayMessage.html +0 -113
- data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +0 -38
- data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +0 -112
- data/doc/cxxapi/classPassenger_1_1BusyException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1BusyException.html +0 -54
- data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +0 -51
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +0 -41
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +0 -223
- data/doc/cxxapi/classPassenger_1_1EOFException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1EOFException.html +0 -61
- data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1EventFd-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1EventFd.html +0 -52
- data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +0 -59
- data/doc/cxxapi/classPassenger_1_1EventedClient.html +0 -531
- data/doc/cxxapi/classPassenger_1_1EventedMessageServer-members.html +0 -37
- data/doc/cxxapi/classPassenger_1_1EventedMessageServer.html +0 -59
- data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1EventedServer-members.html +0 -37
- data/doc/cxxapi/classPassenger_1_1EventedServer.html +0 -93
- data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +0 -41
- data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +0 -178
- data/doc/cxxapi/classPassenger_1_1FileDescriptorPair-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1FileDescriptorPair.html +0 -52
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +0 -58
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +0 -41
- data/doc/cxxapi/classPassenger_1_1FileSystemException.html +0 -66
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html +0 -39
- data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +0 -128
- data/doc/cxxapi/classPassenger_1_1IOException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1IOException.html +0 -61
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +0 -4
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +0 -57
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +0 -839
- data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +0 -49
- data/doc/cxxapi/classPassenger_1_1MessageServer.html +0 -407
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +0 -58
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +0 -41
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +0 -165
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +0 -39
- data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +0 -173
- data/doc/cxxapi/classPassenger_1_1Process-members.html +0 -44
- data/doc/cxxapi/classPassenger_1_1Process.html +0 -290
- data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +0 -37
- data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +0 -79
- data/doc/cxxapi/classPassenger_1_1ResourceLocator-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1ResourceLocator.html +0 -51
- data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1RuntimeException.html +0 -54
- data/doc/cxxapi/classPassenger_1_1SafeLibev-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1SafeLibev.html +0 -51
- data/doc/cxxapi/classPassenger_1_1ScalarMessage-members.html +0 -37
- data/doc/cxxapi/classPassenger_1_1ScalarMessage.html +0 -76
- data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +0 -50
- data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +0 -285
- data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1SecurityException.html +0 -56
- data/doc/cxxapi/classPassenger_1_1Session-members.html +0 -53
- data/doc/cxxapi/classPassenger_1_1Session.html +0 -556
- data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +0 -39
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +0 -101
- data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +0 -42
- data/doc/cxxapi/classPassenger_1_1SpawnManager.html +0 -292
- data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +0 -54
- data/doc/cxxapi/classPassenger_1_1StandardSession.html +0 -394
- data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1StaticString-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1StaticString.html +0 -56
- data/doc/cxxapi/classPassenger_1_1SyntaxError-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1SyntaxError.html +0 -54
- data/doc/cxxapi/classPassenger_1_1SystemException-members.html +0 -40
- data/doc/cxxapi/classPassenger_1_1SystemException.html +0 -155
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +0 -4
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +0 -40
- data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +0 -61
- data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.map +0 -3
- data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.md5 +0 -1
- data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1TimeoutException.html +0 -54
- data/doc/cxxapi/classPassenger_1_1Uint16Message-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1Uint16Message.html +0 -51
- data/doc/cxxapi/classPassenger_1_1Uint32Message-members.html +0 -36
- data/doc/cxxapi/classPassenger_1_1Uint32Message.html +0 -51
- data/doc/cxxapi/classServer-members.html +0 -36
- data/doc/cxxapi/classServer.html +0 -49
- data/doc/cxxapi/classServerInstanceDirToucher-members.html +0 -36
- data/doc/cxxapi/classServerInstanceDirToucher.html +0 -47
- data/doc/cxxapi/classes.html +0 -52
- data/doc/cxxapi/definitions_8h_source.html +0 -36
- data/doc/cxxapi/doxygen.css +0 -532
- data/doc/cxxapi/doxygen.png +0 -0
- data/doc/cxxapi/files.html +0 -76
- data/doc/cxxapi/ftv2blank.png +0 -0
- data/doc/cxxapi/ftv2doc.png +0 -0
- data/doc/cxxapi/ftv2folderclosed.png +0 -0
- data/doc/cxxapi/ftv2folderopen.png +0 -0
- data/doc/cxxapi/ftv2lastnode.png +0 -0
- data/doc/cxxapi/ftv2link.png +0 -0
- data/doc/cxxapi/ftv2mlastnode.png +0 -0
- data/doc/cxxapi/ftv2mnode.png +0 -0
- data/doc/cxxapi/ftv2node.png +0 -0
- data/doc/cxxapi/ftv2plastnode.png +0 -0
- data/doc/cxxapi/ftv2pnode.png +0 -0
- data/doc/cxxapi/ftv2vertline.png +0 -0
- data/doc/cxxapi/functions.html +0 -103
- data/doc/cxxapi/functions_0x62.html +0 -82
- data/doc/cxxapi/functions_0x63.html +0 -102
- data/doc/cxxapi/functions_0x64.html +0 -102
- data/doc/cxxapi/functions_0x65.html +0 -88
- data/doc/cxxapi/functions_0x66.html +0 -100
- data/doc/cxxapi/functions_0x67.html +0 -167
- data/doc/cxxapi/functions_0x68.html +0 -88
- data/doc/cxxapi/functions_0x69.html +0 -96
- data/doc/cxxapi/functions_0x6b.html +0 -80
- data/doc/cxxapi/functions_0x6c.html +0 -88
- data/doc/cxxapi/functions_0x6d.html +0 -88
- data/doc/cxxapi/functions_0x6e.html +0 -86
- data/doc/cxxapi/functions_0x6f.html +0 -94
- data/doc/cxxapi/functions_0x70.html +0 -94
- data/doc/cxxapi/functions_0x72.html +0 -110
- data/doc/cxxapi/functions_0x73.html +0 -171
- data/doc/cxxapi/functions_0x74.html +0 -85
- data/doc/cxxapi/functions_0x75.html +0 -85
- data/doc/cxxapi/functions_0x77.html +0 -92
- data/doc/cxxapi/functions_0x7e.html +0 -79
- data/doc/cxxapi/functions_enum.html +0 -49
- data/doc/cxxapi/functions_eval.html +0 -67
- data/doc/cxxapi/functions_func.html +0 -531
- data/doc/cxxapi/functions_vars.html +0 -278
- data/doc/cxxapi/graph_legend.dot +0 -22
- data/doc/cxxapi/graph_legend.html +0 -92
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Core.html +0 -46
- data/doc/cxxapi/group__Core.map +0 -3
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Exceptions.html +0 -53
- data/doc/cxxapi/group__Hooks.html +0 -42
- data/doc/cxxapi/group__Hooks.map +0 -3
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/group__Support.html +0 -538
- data/doc/cxxapi/hierarchy.html +0 -101
- data/doc/cxxapi/index.html +0 -16
- data/doc/cxxapi/inherit__graph__0.map +0 -3
- data/doc/cxxapi/inherit__graph__0.md5 +0 -1
- data/doc/cxxapi/inherit__graph__0.png +0 -0
- data/doc/cxxapi/inherit__graph__1.map +0 -3
- data/doc/cxxapi/inherit__graph__1.md5 +0 -1
- data/doc/cxxapi/inherit__graph__1.png +0 -0
- data/doc/cxxapi/inherit__graph__10.map +0 -3
- data/doc/cxxapi/inherit__graph__10.md5 +0 -1
- data/doc/cxxapi/inherit__graph__10.png +0 -0
- data/doc/cxxapi/inherit__graph__11.map +0 -4
- data/doc/cxxapi/inherit__graph__11.md5 +0 -1
- data/doc/cxxapi/inherit__graph__11.png +0 -0
- data/doc/cxxapi/inherit__graph__12.map +0 -3
- data/doc/cxxapi/inherit__graph__12.md5 +0 -1
- data/doc/cxxapi/inherit__graph__12.png +0 -0
- data/doc/cxxapi/inherit__graph__13.map +0 -3
- data/doc/cxxapi/inherit__graph__13.md5 +0 -1
- data/doc/cxxapi/inherit__graph__13.png +0 -0
- data/doc/cxxapi/inherit__graph__14.map +0 -3
- data/doc/cxxapi/inherit__graph__14.md5 +0 -1
- data/doc/cxxapi/inherit__graph__14.png +0 -0
- data/doc/cxxapi/inherit__graph__15.map +0 -3
- data/doc/cxxapi/inherit__graph__15.md5 +0 -1
- data/doc/cxxapi/inherit__graph__15.png +0 -0
- data/doc/cxxapi/inherit__graph__16.map +0 -5
- data/doc/cxxapi/inherit__graph__16.md5 +0 -1
- data/doc/cxxapi/inherit__graph__16.png +0 -0
- data/doc/cxxapi/inherit__graph__17.map +0 -3
- data/doc/cxxapi/inherit__graph__17.md5 +0 -1
- data/doc/cxxapi/inherit__graph__17.png +0 -0
- data/doc/cxxapi/inherit__graph__18.map +0 -3
- data/doc/cxxapi/inherit__graph__18.md5 +0 -1
- data/doc/cxxapi/inherit__graph__18.png +0 -0
- data/doc/cxxapi/inherit__graph__19.map +0 -4
- data/doc/cxxapi/inherit__graph__19.md5 +0 -1
- data/doc/cxxapi/inherit__graph__19.png +0 -0
- data/doc/cxxapi/inherit__graph__2.map +0 -3
- data/doc/cxxapi/inherit__graph__2.md5 +0 -1
- data/doc/cxxapi/inherit__graph__2.png +0 -0
- data/doc/cxxapi/inherit__graph__20.map +0 -3
- data/doc/cxxapi/inherit__graph__20.md5 +0 -1
- data/doc/cxxapi/inherit__graph__20.png +0 -0
- data/doc/cxxapi/inherit__graph__21.map +0 -3
- data/doc/cxxapi/inherit__graph__21.md5 +0 -1
- data/doc/cxxapi/inherit__graph__21.png +0 -0
- data/doc/cxxapi/inherit__graph__22.map +0 -3
- data/doc/cxxapi/inherit__graph__22.md5 +0 -1
- data/doc/cxxapi/inherit__graph__22.png +0 -0
- data/doc/cxxapi/inherit__graph__23.map +0 -3
- data/doc/cxxapi/inherit__graph__23.md5 +0 -1
- data/doc/cxxapi/inherit__graph__23.png +0 -0
- data/doc/cxxapi/inherit__graph__24.map +0 -3
- data/doc/cxxapi/inherit__graph__24.md5 +0 -1
- data/doc/cxxapi/inherit__graph__24.png +0 -0
- data/doc/cxxapi/inherit__graph__25.map +0 -3
- data/doc/cxxapi/inherit__graph__25.md5 +0 -1
- data/doc/cxxapi/inherit__graph__25.png +0 -0
- data/doc/cxxapi/inherit__graph__26.map +0 -3
- data/doc/cxxapi/inherit__graph__26.md5 +0 -1
- data/doc/cxxapi/inherit__graph__26.png +0 -0
- data/doc/cxxapi/inherit__graph__27.map +0 -3
- data/doc/cxxapi/inherit__graph__27.md5 +0 -1
- data/doc/cxxapi/inherit__graph__27.png +0 -0
- data/doc/cxxapi/inherit__graph__28.map +0 -3
- data/doc/cxxapi/inherit__graph__28.md5 +0 -1
- data/doc/cxxapi/inherit__graph__28.png +0 -0
- data/doc/cxxapi/inherit__graph__29.map +0 -3
- data/doc/cxxapi/inherit__graph__29.md5 +0 -1
- data/doc/cxxapi/inherit__graph__29.png +0 -0
- data/doc/cxxapi/inherit__graph__3.map +0 -4
- data/doc/cxxapi/inherit__graph__3.md5 +0 -1
- data/doc/cxxapi/inherit__graph__3.png +0 -0
- data/doc/cxxapi/inherit__graph__30.map +0 -3
- data/doc/cxxapi/inherit__graph__30.md5 +0 -1
- data/doc/cxxapi/inherit__graph__30.png +0 -0
- data/doc/cxxapi/inherit__graph__31.map +0 -4
- data/doc/cxxapi/inherit__graph__31.md5 +0 -1
- data/doc/cxxapi/inherit__graph__31.png +0 -0
- data/doc/cxxapi/inherit__graph__32.map +0 -3
- data/doc/cxxapi/inherit__graph__32.md5 +0 -1
- data/doc/cxxapi/inherit__graph__32.png +0 -0
- data/doc/cxxapi/inherit__graph__33.map +0 -3
- data/doc/cxxapi/inherit__graph__33.md5 +0 -1
- data/doc/cxxapi/inherit__graph__33.png +0 -0
- data/doc/cxxapi/inherit__graph__34.map +0 -3
- data/doc/cxxapi/inherit__graph__34.md5 +0 -1
- data/doc/cxxapi/inherit__graph__34.png +0 -0
- data/doc/cxxapi/inherit__graph__35.map +0 -3
- data/doc/cxxapi/inherit__graph__35.md5 +0 -1
- data/doc/cxxapi/inherit__graph__35.png +0 -0
- data/doc/cxxapi/inherit__graph__36.map +0 -5
- data/doc/cxxapi/inherit__graph__36.md5 +0 -1
- data/doc/cxxapi/inherit__graph__36.png +0 -0
- data/doc/cxxapi/inherit__graph__37.map +0 -3
- data/doc/cxxapi/inherit__graph__37.md5 +0 -1
- data/doc/cxxapi/inherit__graph__37.png +0 -0
- data/doc/cxxapi/inherit__graph__38.map +0 -3
- data/doc/cxxapi/inherit__graph__38.md5 +0 -1
- data/doc/cxxapi/inherit__graph__38.png +0 -0
- data/doc/cxxapi/inherit__graph__39.map +0 -3
- data/doc/cxxapi/inherit__graph__39.md5 +0 -1
- data/doc/cxxapi/inherit__graph__39.png +0 -0
- data/doc/cxxapi/inherit__graph__4.map +0 -3
- data/doc/cxxapi/inherit__graph__4.md5 +0 -1
- data/doc/cxxapi/inherit__graph__4.png +0 -0
- data/doc/cxxapi/inherit__graph__40.map +0 -3
- data/doc/cxxapi/inherit__graph__40.md5 +0 -1
- data/doc/cxxapi/inherit__graph__40.png +0 -0
- data/doc/cxxapi/inherit__graph__41.map +0 -3
- data/doc/cxxapi/inherit__graph__41.md5 +0 -1
- data/doc/cxxapi/inherit__graph__41.png +0 -0
- data/doc/cxxapi/inherit__graph__5.map +0 -3
- data/doc/cxxapi/inherit__graph__5.md5 +0 -1
- data/doc/cxxapi/inherit__graph__5.png +0 -0
- data/doc/cxxapi/inherit__graph__6.map +0 -3
- data/doc/cxxapi/inherit__graph__6.md5 +0 -1
- data/doc/cxxapi/inherit__graph__6.png +0 -0
- data/doc/cxxapi/inherit__graph__7.map +0 -3
- data/doc/cxxapi/inherit__graph__7.md5 +0 -1
- data/doc/cxxapi/inherit__graph__7.png +0 -0
- data/doc/cxxapi/inherit__graph__8.map +0 -3
- data/doc/cxxapi/inherit__graph__8.md5 +0 -1
- data/doc/cxxapi/inherit__graph__8.png +0 -0
- data/doc/cxxapi/inherit__graph__9.map +0 -3
- data/doc/cxxapi/inherit__graph__9.md5 +0 -1
- data/doc/cxxapi/inherit__graph__9.png +0 -0
- data/doc/cxxapi/inherits.html +0 -165
- data/doc/cxxapi/main.html +0 -28
- data/doc/cxxapi/modules.html +0 -36
- data/doc/cxxapi/namespacePassenger.html +0 -585
- data/doc/cxxapi/namespacemembers.html +0 -190
- data/doc/cxxapi/namespacemembers_enum.html +0 -48
- data/doc/cxxapi/namespacemembers_eval.html +0 -57
- data/doc/cxxapi/namespacemembers_func.html +0 -114
- data/doc/cxxapi/namespacemembers_type.html +0 -54
- data/doc/cxxapi/namespaces.html +0 -37
- data/doc/cxxapi/nginx_2Configuration_8h_source.html +0 -126
- data/doc/cxxapi/ngx__http__passenger__module_8h_source.html +0 -95
- data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +0 -36
- data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +0 -51
- data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +0 -67
- data/doc/cxxapi/structPassenger_1_1PoolOptions.html +0 -647
- data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +0 -36
- data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +0 -51
- data/doc/cxxapi/tab_b.gif +0 -0
- data/doc/cxxapi/tab_l.gif +0 -0
- data/doc/cxxapi/tab_r.gif +0 -0
- data/doc/cxxapi/tabs.css +0 -105
- data/doc/cxxapi/tree.html +0 -249
- data/doc/template/horo.rb +0 -613
- data/ext/libev/config.h +0 -122
- data/ext/nginx/HttpStatusExtractor.h +0 -351
data/NEWS
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
Release 3.0.8
|
2
|
+
-------------
|
3
|
+
|
4
|
+
* [Nginx] Upgraded preferred Nginx version to 1.0.5.
|
5
|
+
* [Nginx] Fixed various compilation problems on various platforms.
|
6
|
+
* [Nginx] We now ensure that SERVER_NAME is equal to HTTP_HOST without the port part.
|
7
|
+
This is needed for Rack compliance. By default Nginx sets SERVER_NAME to
|
8
|
+
whatever is specified in the server_name directive, but that's not necessarily
|
9
|
+
the correct value. This fixes, for example, the use of the 'map' statement
|
10
|
+
in config.ru.
|
11
|
+
* [Nginx] Added the options passenger_buffer_size, passenger_buffers and passenger_busy_buffers_size.
|
12
|
+
These options are similar to proxy_module's similarly named options. You can
|
13
|
+
use these to e.g. increase the maximum header size limit.
|
14
|
+
* [Nginx] passenger_pre_start now supports virtual hosts that listen on Unix domain sockets.
|
15
|
+
* [Apache] Fixed the pcre.h compilation problem.
|
16
|
+
* [Standalone] Fixed 'passenger stop'.
|
17
|
+
It didn't work properly because it kept waiting for 'tail' to exit.
|
18
|
+
We now properly terminate 'tail' as well.
|
19
|
+
* Fixed compatibility with Rake 0.9.
|
20
|
+
* Fixed various Ruby 1.9 compatibility issues.
|
21
|
+
* Various documentation improvements.
|
22
|
+
* New Union Station filter language features.
|
23
|
+
It now supports status codes and response times.
|
24
|
+
Please refer to https://engage.unionstationapp.com/help#filtering
|
25
|
+
for more information.
|
26
|
+
|
27
|
+
|
1
28
|
Release 3.0.7
|
2
29
|
-------------
|
3
30
|
|
data/README
CHANGED
@@ -32,7 +32,7 @@ our website.
|
|
32
32
|
You may also first generate a .gem file, and then install that.
|
33
33
|
First, make sure that you have the following software installed:
|
34
34
|
- Doxygen: http://www.stack.nl/~dimitri/doxygen/
|
35
|
-
- Asciidoc: http://www.methods.co.nz/asciidoc/
|
35
|
+
- Asciidoc >= 8.6.5: http://www.methods.co.nz/asciidoc/
|
36
36
|
|
37
37
|
Next, run:
|
38
38
|
|
@@ -390,7 +390,9 @@ private
|
|
390
390
|
end
|
391
391
|
|
392
392
|
def build_nginx_configure_command(prefix, extra_configure_flags = nil)
|
393
|
-
command = "sh ./configure --prefix='#{prefix}'
|
393
|
+
command = "sh ./configure --prefix='#{prefix}' "
|
394
|
+
command << "--with-http_ssl_module "
|
395
|
+
command << "--with-cc-opt='-Wno-error' "
|
394
396
|
if @pcre_source_dir
|
395
397
|
command << "--with-pcre='#{@pcre_source_dir}' "
|
396
398
|
elsif !pcre_is_installed?
|
data/build/config.rb
CHANGED
@@ -24,6 +24,7 @@
|
|
24
24
|
OPTIMIZE = boolean_option("OPTIMIZE")
|
25
25
|
CC = string_option("CC", "gcc")
|
26
26
|
CXX = string_option("CXX", "g++")
|
27
|
+
# TODO: consider -fcommon
|
27
28
|
if OPTIMIZE
|
28
29
|
OPTIMIZATION_FLAGS = "#{PlatformInfo.debugging_cflags} -O2 -DBOOST_DISABLE_ASSERTS".strip
|
29
30
|
else
|
@@ -32,7 +33,7 @@ end
|
|
32
33
|
|
33
34
|
# Extra compiler flags that should always be passed to the C/C++ compiler.
|
34
35
|
# Should be included last in the command string, even after PlatformInfo.portability_cflags.
|
35
|
-
EXTRA_CXXFLAGS = "-
|
36
|
+
EXTRA_CXXFLAGS = "-Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long #{OPTIMIZATION_FLAGS}".strip
|
36
37
|
|
37
38
|
# Extra linker flags that should always be passed to the linker.
|
38
39
|
# Should be included last in the command string, even after PlatformInfo.portability_ldflags.
|
data/build/cxx_tests.rb
CHANGED
@@ -125,9 +125,13 @@ TEST_CXX_OBJECTS = {
|
|
125
125
|
test/cxx/ScgiRequestParserTest.cpp
|
126
126
|
ext/nginx/ScgiRequestParser.h
|
127
127
|
ext/common/StaticString.h),
|
128
|
-
'test/cxx/
|
129
|
-
test/cxx/
|
130
|
-
ext/
|
128
|
+
'test/cxx/DechunkerTest.o' => %w(
|
129
|
+
test/cxx/DechunkerTest.cpp
|
130
|
+
ext/common/Utils/Dechunker.h),
|
131
|
+
'test/cxx/HttpHeaderBuffererTest.o' => %w(
|
132
|
+
test/cxx/HttpHeaderBuffererTest.cpp
|
133
|
+
ext/common/Utils/HttpHeaderBufferer.h
|
134
|
+
ext/common/Utils/StreamBoyerMooreHorspool.h),
|
131
135
|
'test/cxx/LoggingTest.o' => %w(
|
132
136
|
test/cxx/LoggingTest.cpp
|
133
137
|
ext/common/LoggingAgent/LoggingServer.h
|
data/build/documentation.rb
CHANGED
@@ -21,16 +21,9 @@
|
|
21
21
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
22
|
# THE SOFTWARE.
|
23
23
|
|
24
|
-
ASCIIDOC_FLAGS = "-a toc -a numbered -a toclevels=3 -a icons"
|
25
|
-
DOXYGEN = 'doxygen'
|
24
|
+
ASCIIDOC_FLAGS = "-b html5 -a toc -a theme=flask -a numbered -a toclevels=3 -a icons"
|
26
25
|
|
27
26
|
desc "Generate all documentation"
|
28
|
-
task :doc => [:rdoc]
|
29
|
-
|
30
|
-
if PlatformInfo.find_command(DOXYGEN)
|
31
|
-
task :doc => :doxygen
|
32
|
-
end
|
33
|
-
|
34
27
|
task :doc => Packaging::ASCII_DOCS
|
35
28
|
|
36
29
|
Packaging::ASCII_DOCS.each do |target|
|
@@ -49,36 +42,8 @@ Packaging::ASCII_DOCS.each do |target|
|
|
49
42
|
sh "echo 'asciidoc required to build docs' > '#{target}'"
|
50
43
|
end
|
51
44
|
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
desc "Generate Doxygen C++ API documentation if necessary"
|
59
|
-
task :doxygen => ['doc/cxxapi']
|
60
|
-
file 'doc/cxxapi' => Dir['ext/apache2/*.{h,c,cpp}'] do
|
61
|
-
sh "cd doc && doxygen"
|
62
|
-
end
|
63
|
-
|
64
|
-
desc "Force generation of Doxygen C++ API documentation"
|
65
|
-
task :'doxygen:force' do
|
66
|
-
sh "cd doc && doxygen"
|
67
|
-
end
|
68
|
-
|
69
|
-
desc "Remove generated Doxygen C++ API documentation"
|
70
|
-
task :'doxygen:clobber' do
|
71
|
-
sh "rm -rf doc/cxxapi"
|
72
|
-
end
|
73
|
-
|
74
|
-
Rake::RDocTask.new(:clobber_rdoc => "rdoc:clobber", :rerdoc => "rdoc:force") do |rd|
|
75
|
-
rd.main = "README"
|
76
|
-
rd.rdoc_dir = "doc/rdoc"
|
77
|
-
rd.rdoc_files.include("README", "DEVELOPERS.TXT",
|
78
|
-
"lib/phusion_passenger/*.rb",
|
79
|
-
"lib/phusion_passenger/*/*.rb",
|
80
|
-
"ext/phusion_passenger/*.c")
|
81
|
-
rd.template = "./doc/template/horo"
|
82
|
-
rd.title = "Passenger Ruby API"
|
83
|
-
rd.options << "-S" << "-N" << "-p" << "-H"
|
45
|
+
|
46
|
+
task :clean do
|
47
|
+
sh "rm -f '#{target}'"
|
48
|
+
end
|
84
49
|
end
|
data/build/nginx.rb
CHANGED
data/build/packaging.rb
CHANGED
@@ -46,12 +46,6 @@ spec = Gem::Specification.new do |s|
|
|
46
46
|
s.add_dependency 'rack'
|
47
47
|
s.files = FileList[*Packaging::GLOB] - FileList[*Packaging::EXCLUDE_GLOB]
|
48
48
|
s.executables = Packaging::USER_EXECUTABLES + Packaging::SUPER_USER_EXECUTABLES
|
49
|
-
s.has_rdoc = true
|
50
|
-
s.extra_rdoc_files = ['README']
|
51
|
-
s.rdoc_options <<
|
52
|
-
"-S" << "-N" << "-p" << "-H" <<
|
53
|
-
'--main' << 'README' <<
|
54
|
-
'--title' << 'Passenger Ruby API'
|
55
49
|
s.description = "Easy and robust Ruby web application deployment."
|
56
50
|
end
|
57
51
|
|
data/build/rake_extensions.rb
CHANGED
@@ -104,6 +104,11 @@ def subdir(dir, &block)
|
|
104
104
|
end
|
105
105
|
|
106
106
|
class Subdir # :nodoc:
|
107
|
+
# Rake 0.9 compatibility since methods like <tt>task<tt> and <tt>desc</tt>
|
108
|
+
# aren't available in Object anymore.
|
109
|
+
# See: https://github.com/jimweirich/rake/issues/33#issuecomment-1213705
|
110
|
+
include Rake::DSL if defined?(Rake::DSL)
|
111
|
+
|
107
112
|
def initialize(dir)
|
108
113
|
@dir = dir
|
109
114
|
@toplevel_dir = Pathname.getwd
|
@@ -1,16 +1,35 @@
|
|
1
|
-
<!DOCTYPE html
|
2
|
-
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
4
3
|
<head>
|
5
|
-
<meta http-equiv="Content-Type" content="
|
6
|
-
<meta name="generator" content="AsciiDoc 8.6.
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
|
+
<meta name="generator" content="AsciiDoc 8.6.5">
|
7
6
|
<title>Passenger architectural overview</title>
|
8
7
|
<style type="text/css">
|
9
|
-
/* Debug borders */
|
10
|
-
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
|
11
8
|
/*
|
12
|
-
|
13
|
-
|
9
|
+
* AsciiDoc 'flask' theme for xhtml11 and html5 backends. A shameless knock-off
|
10
|
+
* of the Flask website styling (http://flask.pocoo.org/docs/).
|
11
|
+
*
|
12
|
+
* The implementation is straight-forward, consisting of the asciidoc.css file
|
13
|
+
* followed by theme specific overrides.
|
14
|
+
*
|
15
|
+
* */
|
16
|
+
|
17
|
+
|
18
|
+
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
|
19
|
+
|
20
|
+
/* Default font. */
|
21
|
+
body {
|
22
|
+
font-family: Georgia,serif;
|
23
|
+
}
|
24
|
+
|
25
|
+
/* Title font. */
|
26
|
+
h1, h2, h3, h4, h5, h6,
|
27
|
+
div.title, caption.title,
|
28
|
+
thead, p.table.header,
|
29
|
+
#toctitle,
|
30
|
+
#author, #revnumber, #revdate, #revremark,
|
31
|
+
#footer {
|
32
|
+
font-family: Arial,Helvetica,sans-serif;
|
14
33
|
}
|
15
34
|
|
16
35
|
body {
|
@@ -35,13 +54,8 @@ strong {
|
|
35
54
|
color: #083194;
|
36
55
|
}
|
37
56
|
|
38
|
-
tt {
|
39
|
-
color: navy;
|
40
|
-
}
|
41
|
-
|
42
57
|
h1, h2, h3, h4, h5, h6 {
|
43
58
|
color: #527bbd;
|
44
|
-
font-family: sans-serif;
|
45
59
|
margin-top: 1.2em;
|
46
60
|
margin-bottom: 0.5em;
|
47
61
|
line-height: 1.3;
|
@@ -59,9 +73,11 @@ h3 {
|
|
59
73
|
h3 + * {
|
60
74
|
clear: left;
|
61
75
|
}
|
76
|
+
h5 {
|
77
|
+
font-size: 1.0em;
|
78
|
+
}
|
62
79
|
|
63
80
|
div.sectionbody {
|
64
|
-
font-family: serif;
|
65
81
|
margin-left: 0;
|
66
82
|
}
|
67
83
|
|
@@ -77,45 +93,44 @@ p {
|
|
77
93
|
ul, ol, li > p {
|
78
94
|
margin-top: 0;
|
79
95
|
}
|
96
|
+
ul > li { color: #aaa; }
|
97
|
+
ul > li > * { color: black; }
|
80
98
|
|
81
99
|
pre {
|
82
100
|
padding: 0;
|
83
101
|
margin: 0;
|
84
102
|
}
|
85
103
|
|
86
|
-
|
104
|
+
#author {
|
87
105
|
color: #527bbd;
|
88
|
-
font-family: sans-serif;
|
89
106
|
font-weight: bold;
|
90
107
|
font-size: 1.1em;
|
91
108
|
}
|
92
|
-
|
109
|
+
#email {
|
93
110
|
}
|
94
|
-
|
95
|
-
font-family: sans-serif;
|
111
|
+
#revnumber, #revdate, #revremark {
|
96
112
|
}
|
97
113
|
|
98
|
-
|
99
|
-
font-family: sans-serif;
|
114
|
+
#footer {
|
100
115
|
font-size: small;
|
101
116
|
border-top: 2px solid silver;
|
102
117
|
padding-top: 0.5em;
|
103
118
|
margin-top: 4.0em;
|
104
119
|
}
|
105
|
-
|
120
|
+
#footer-text {
|
106
121
|
float: left;
|
107
122
|
padding-bottom: 0.5em;
|
108
123
|
}
|
109
|
-
|
124
|
+
#footer-badges {
|
110
125
|
float: right;
|
111
126
|
padding-bottom: 0.5em;
|
112
127
|
}
|
113
128
|
|
114
|
-
|
129
|
+
#preamble {
|
115
130
|
margin-top: 1.5em;
|
116
131
|
margin-bottom: 1.5em;
|
117
132
|
}
|
118
|
-
div.
|
133
|
+
div.imageblock, div.exampleblock, div.verseblock,
|
119
134
|
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
|
120
135
|
div.admonitionblock {
|
121
136
|
margin-top: 1.0em;
|
@@ -135,7 +150,6 @@ div.content { /* Block element content. */
|
|
135
150
|
/* Block element titles. */
|
136
151
|
div.title, caption.title {
|
137
152
|
color: #527bbd;
|
138
|
-
font-family: sans-serif;
|
139
153
|
font-weight: bold;
|
140
154
|
text-align: left;
|
141
155
|
margin-top: 1.0em;
|
@@ -157,13 +171,15 @@ div.content + div.title {
|
|
157
171
|
|
158
172
|
div.sidebarblock > div.content {
|
159
173
|
background: #ffffee;
|
160
|
-
border: 1px solid
|
174
|
+
border: 1px solid #dddddd;
|
175
|
+
border-left: 4px solid #f0f0f0;
|
161
176
|
padding: 0.5em;
|
162
177
|
}
|
163
178
|
|
164
179
|
div.listingblock > div.content {
|
165
|
-
border: 1px solid
|
166
|
-
|
180
|
+
border: 1px solid #dddddd;
|
181
|
+
border-left: 5px solid #f0f0f0;
|
182
|
+
background: #f8f8f8;
|
167
183
|
padding: 0.5em;
|
168
184
|
}
|
169
185
|
|
@@ -171,7 +187,7 @@ div.quoteblock, div.verseblock {
|
|
171
187
|
padding-left: 1.0em;
|
172
188
|
margin-left: 1.0em;
|
173
189
|
margin-right: 10%;
|
174
|
-
border-left: 5px solid #
|
190
|
+
border-left: 5px solid #f0f0f0;
|
175
191
|
color: #777777;
|
176
192
|
}
|
177
193
|
|
@@ -182,6 +198,7 @@ div.quoteblock > div.attribution {
|
|
182
198
|
|
183
199
|
div.verseblock > pre.content {
|
184
200
|
font-family: inherit;
|
201
|
+
font-size: inherit;
|
185
202
|
}
|
186
203
|
div.verseblock > div.attribution {
|
187
204
|
padding-top: 0.75em;
|
@@ -254,36 +271,12 @@ div.compact div, div.compact div {
|
|
254
271
|
margin-bottom: 0.1em;
|
255
272
|
}
|
256
273
|
|
257
|
-
div.tableblock > table {
|
258
|
-
border: 3px solid #527bbd;
|
259
|
-
}
|
260
|
-
thead, p.table.header {
|
261
|
-
font-family: sans-serif;
|
262
|
-
font-weight: bold;
|
263
|
-
color: #527bbd;
|
264
|
-
}
|
265
274
|
tfoot {
|
266
275
|
font-weight: bold;
|
267
276
|
}
|
268
277
|
td > div.verse {
|
269
278
|
white-space: pre;
|
270
279
|
}
|
271
|
-
p.table {
|
272
|
-
margin-top: 0;
|
273
|
-
}
|
274
|
-
/* Because the table frame attribute is overriden by CSS in most browsers. */
|
275
|
-
div.tableblock > table[frame="void"] {
|
276
|
-
border-style: none;
|
277
|
-
}
|
278
|
-
div.tableblock > table[frame="hsides"] {
|
279
|
-
border-left-style: none;
|
280
|
-
border-right-style: none;
|
281
|
-
}
|
282
|
-
div.tableblock > table[frame="vsides"] {
|
283
|
-
border-top-style: none;
|
284
|
-
border-bottom-style: none;
|
285
|
-
}
|
286
|
-
|
287
280
|
|
288
281
|
div.hdlist {
|
289
282
|
margin-top: 0.8em;
|
@@ -350,16 +343,15 @@ div.colist td img {
|
|
350
343
|
}
|
351
344
|
|
352
345
|
@media print {
|
353
|
-
|
346
|
+
#footer-badges { display: none; }
|
354
347
|
}
|
355
348
|
|
356
|
-
|
349
|
+
#toc {
|
357
350
|
margin-bottom: 2.5em;
|
358
351
|
}
|
359
352
|
|
360
|
-
|
353
|
+
#toctitle {
|
361
354
|
color: #527bbd;
|
362
|
-
font-family: sans-serif;
|
363
355
|
font-size: 1.1em;
|
364
356
|
font-weight: bold;
|
365
357
|
margin-top: 1.0em;
|
@@ -383,10 +375,223 @@ div.toclevel4 {
|
|
383
375
|
font-size: 0.9em;
|
384
376
|
}
|
385
377
|
|
378
|
+
span.aqua { color: aqua; }
|
379
|
+
span.black { color: black; }
|
380
|
+
span.blue { color: blue; }
|
381
|
+
span.fuchsia { color: fuchsia; }
|
382
|
+
span.gray { color: gray; }
|
383
|
+
span.green { color: green; }
|
384
|
+
span.lime { color: lime; }
|
385
|
+
span.maroon { color: maroon; }
|
386
|
+
span.navy { color: navy; }
|
387
|
+
span.olive { color: olive; }
|
388
|
+
span.purple { color: purple; }
|
389
|
+
span.red { color: red; }
|
390
|
+
span.silver { color: silver; }
|
391
|
+
span.teal { color: teal; }
|
392
|
+
span.white { color: white; }
|
393
|
+
span.yellow { color: yellow; }
|
394
|
+
|
395
|
+
span.aqua-background { background: aqua; }
|
396
|
+
span.black-background { background: black; }
|
397
|
+
span.blue-background { background: blue; }
|
398
|
+
span.fuchsia-background { background: fuchsia; }
|
399
|
+
span.gray-background { background: gray; }
|
400
|
+
span.green-background { background: green; }
|
401
|
+
span.lime-background { background: lime; }
|
402
|
+
span.maroon-background { background: maroon; }
|
403
|
+
span.navy-background { background: navy; }
|
404
|
+
span.olive-background { background: olive; }
|
405
|
+
span.purple-background { background: purple; }
|
406
|
+
span.red-background { background: red; }
|
407
|
+
span.silver-background { background: silver; }
|
408
|
+
span.teal-background { background: teal; }
|
409
|
+
span.white-background { background: white; }
|
410
|
+
span.yellow-background { background: yellow; }
|
411
|
+
|
412
|
+
span.big { font-size: 2em; }
|
413
|
+
span.small { font-size: 0.6em; }
|
414
|
+
|
415
|
+
span.underline { text-decoration: underline; }
|
416
|
+
span.overline { text-decoration: overline; }
|
417
|
+
span.line-through { text-decoration: line-through; }
|
418
|
+
|
419
|
+
|
420
|
+
/*
|
421
|
+
* xhtml11 specific
|
422
|
+
*
|
423
|
+
* */
|
424
|
+
|
425
|
+
tt {
|
426
|
+
font-family: monospace;
|
427
|
+
font-size: inherit;
|
428
|
+
color: navy;
|
429
|
+
}
|
430
|
+
|
431
|
+
div.tableblock {
|
432
|
+
margin-top: 1.0em;
|
433
|
+
margin-bottom: 1.5em;
|
434
|
+
}
|
435
|
+
div.tableblock > table {
|
436
|
+
border: 3px solid #527bbd;
|
437
|
+
}
|
438
|
+
thead, p.table.header {
|
439
|
+
font-weight: bold;
|
440
|
+
color: #527bbd;
|
441
|
+
}
|
442
|
+
p.table {
|
443
|
+
margin-top: 0;
|
444
|
+
}
|
445
|
+
/* Because the table frame attribute is overriden by CSS in most browsers. */
|
446
|
+
div.tableblock > table[frame="void"] {
|
447
|
+
border-style: none;
|
448
|
+
}
|
449
|
+
div.tableblock > table[frame="hsides"] {
|
450
|
+
border-left-style: none;
|
451
|
+
border-right-style: none;
|
452
|
+
}
|
453
|
+
div.tableblock > table[frame="vsides"] {
|
454
|
+
border-top-style: none;
|
455
|
+
border-bottom-style: none;
|
456
|
+
}
|
457
|
+
|
458
|
+
|
459
|
+
/*
|
460
|
+
* html5 specific
|
461
|
+
*
|
462
|
+
* */
|
463
|
+
|
464
|
+
.monospaced {
|
465
|
+
font-family: monospace;
|
466
|
+
font-size: inherit;
|
467
|
+
color: navy;
|
468
|
+
}
|
469
|
+
|
470
|
+
table.tableblock {
|
471
|
+
margin-top: 1.0em;
|
472
|
+
margin-bottom: 1.5em;
|
473
|
+
}
|
474
|
+
thead, p.tableblock.header {
|
475
|
+
font-weight: bold;
|
476
|
+
color: #527bbd;
|
477
|
+
}
|
478
|
+
p.tableblock {
|
479
|
+
margin-top: 0;
|
480
|
+
}
|
481
|
+
table.tableblock {
|
482
|
+
border-width: 3px;
|
483
|
+
border-spacing: 0px;
|
484
|
+
border-style: solid;
|
485
|
+
border-color: #527bbd;
|
486
|
+
border-collapse: collapse;
|
487
|
+
}
|
488
|
+
th.tableblock, td.tableblock {
|
489
|
+
border-width: 1px;
|
490
|
+
padding: 4px;
|
491
|
+
border-style: solid;
|
492
|
+
border-color: #527bbd;
|
493
|
+
}
|
494
|
+
|
495
|
+
table.tableblock.frame-topbot {
|
496
|
+
border-left-style: hidden;
|
497
|
+
border-right-style: hidden;
|
498
|
+
}
|
499
|
+
table.tableblock.frame-sides {
|
500
|
+
border-top-style: hidden;
|
501
|
+
border-bottom-style: hidden;
|
502
|
+
}
|
503
|
+
table.tableblock.frame-none {
|
504
|
+
border-style: hidden;
|
505
|
+
}
|
506
|
+
|
507
|
+
th.tableblock.halign-left, td.tableblock.halign-left {
|
508
|
+
text-align: left;
|
509
|
+
}
|
510
|
+
th.tableblock.halign-center, td.tableblock.halign-center {
|
511
|
+
text-align: center;
|
512
|
+
}
|
513
|
+
th.tableblock.halign-right, td.tableblock.halign-right {
|
514
|
+
text-align: right;
|
515
|
+
}
|
516
|
+
|
517
|
+
th.tableblock.valign-top, td.tableblock.valign-top {
|
518
|
+
vertical-align: top;
|
519
|
+
}
|
520
|
+
th.tableblock.valign-middle, td.tableblock.valign-middle {
|
521
|
+
vertical-align: middle;
|
522
|
+
}
|
523
|
+
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
|
524
|
+
vertical-align: bottom;
|
525
|
+
}
|
526
|
+
|
527
|
+
|
528
|
+
/*
|
529
|
+
* Theme specific overrides of the preceding (asciidoc.css) CSS.
|
530
|
+
*
|
531
|
+
*/
|
532
|
+
body {
|
533
|
+
font-family: Garamond, Georgia, serif;
|
534
|
+
font-size: 17px;
|
535
|
+
color: #3E4349;
|
536
|
+
line-height: 1.3em;
|
537
|
+
}
|
538
|
+
h1, h2, h3, h4, h5, h6,
|
539
|
+
div.title, caption.title,
|
540
|
+
thead, p.table.header,
|
541
|
+
#toctitle,
|
542
|
+
#author, #revnumber, #revdate, #revremark,
|
543
|
+
#footer {
|
544
|
+
font-family: Garmond, Georgia, serif;
|
545
|
+
font-weight: normal;
|
546
|
+
border-bottom-width: 0;
|
547
|
+
color: #3E4349;
|
548
|
+
}
|
549
|
+
div.title, caption.title { color: #596673; font-weight: bold; }
|
550
|
+
h1 { font-size: 240%; }
|
551
|
+
h2 { font-size: 180%; }
|
552
|
+
h3 { font-size: 150%; }
|
553
|
+
h4 { font-size: 130%; }
|
554
|
+
h5 { font-size: 100%; }
|
555
|
+
h6 { font-size: 100%; }
|
556
|
+
#header h1 { margin-top: 0; }
|
557
|
+
#toc {
|
558
|
+
color: #444444;
|
559
|
+
line-height: 1.5;
|
560
|
+
padding-top: 1.5em;
|
561
|
+
}
|
562
|
+
#toctitle {
|
563
|
+
font-size: 20px;
|
564
|
+
}
|
565
|
+
#toc a {
|
566
|
+
border-bottom: 1px dotted #999999;
|
567
|
+
color: #444444 !important;
|
568
|
+
text-decoration: none !important;
|
569
|
+
}
|
570
|
+
#toc a:hover {
|
571
|
+
border-bottom: 1px solid #6D4100;
|
572
|
+
color: #6D4100 !important;
|
573
|
+
text-decoration: none !important;
|
574
|
+
}
|
575
|
+
div.toclevel1 { margin-top: 0.2em; font-size: 16px; }
|
576
|
+
div.toclevel2 { margin-top: 0.15em; font-size: 14px; }
|
577
|
+
em, dt, td.hdlist1 { color: black; }
|
578
|
+
strong { color: #3E4349; }
|
579
|
+
a { color: #004B6B; text-decoration: none; border-bottom: 1px dotted #004B6B; }
|
580
|
+
a:visited { color: #615FA0; border-bottom: 1px dotted #615FA0; }
|
581
|
+
a:hover { color: #6D4100; border-bottom: 1px solid #6D4100; }
|
582
|
+
div.tableblock > table, table.tableblock { border: 3px solid #E8E8E8; }
|
583
|
+
th.tableblock, td.tableblock { border: 1px solid #E8E8E8; }
|
584
|
+
ul > li > * { color: #3E4349; }
|
585
|
+
pre, tt, .monospaced { font-family: Consolas,Menlo,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace; }
|
586
|
+
tt, .monospaced { font-size: 0.9em; color: black;
|
587
|
+
}
|
588
|
+
div.exampleblock > div.content, div.sidebarblock > div.content, div.listingblock > div.content { border-width: 0 0 0 3px; border-color: #E8E8E8; }
|
589
|
+
div.verseblock { border-left-width: 0; margin-left: 3em; }
|
590
|
+
div.quoteblock { border-left-width: 3px; margin-left: 0; margin-right: 0;}
|
591
|
+
div.admonitionblock td.content { border-left: 3px solid #E8E8E8; }
|
386
592
|
</style>
|
387
593
|
<script type="text/javascript">
|
388
594
|
/*<![CDATA[*/
|
389
|
-
window.onload = function(){asciidoc.footnotes(); asciidoc.toc(3);}
|
390
595
|
var asciidoc = { // Namespace.
|
391
596
|
|
392
597
|
/////////////////////////////////////////////////////////////////////
|
@@ -448,6 +653,25 @@ toc: function (toclevels) {
|
|
448
653
|
}
|
449
654
|
|
450
655
|
var toc = document.getElementById("toc");
|
656
|
+
if (!toc) {
|
657
|
+
return;
|
658
|
+
}
|
659
|
+
|
660
|
+
// Delete existing TOC entries in case we're reloading the TOC.
|
661
|
+
var tocEntriesToRemove = [];
|
662
|
+
var i;
|
663
|
+
for (i = 0; i < toc.childNodes.length; i++) {
|
664
|
+
var entry = toc.childNodes[i];
|
665
|
+
if (entry.nodeName == 'DIV'
|
666
|
+
&& entry.getAttribute("class")
|
667
|
+
&& entry.getAttribute("class").match(/^toclevel/))
|
668
|
+
tocEntriesToRemove.push(entry);
|
669
|
+
}
|
670
|
+
for (i = 0; i < tocEntriesToRemove.length; i++) {
|
671
|
+
toc.removeChild(tocEntriesToRemove[i]);
|
672
|
+
}
|
673
|
+
|
674
|
+
// Rebuild TOC entries.
|
451
675
|
var entries = tocEntries(document.getElementById("content"), toclevels);
|
452
676
|
for (var i = 0; i < entries.length; ++i) {
|
453
677
|
var entry = entries[i];
|
@@ -475,24 +699,44 @@ toc: function (toclevels) {
|
|
475
699
|
*/
|
476
700
|
|
477
701
|
footnotes: function () {
|
478
|
-
|
702
|
+
// Delete existing footnote entries in case we're reloading the footnodes.
|
703
|
+
var i;
|
479
704
|
var noteholder = document.getElementById("footnotes");
|
705
|
+
if (!noteholder) {
|
706
|
+
return;
|
707
|
+
}
|
708
|
+
var entriesToRemove = [];
|
709
|
+
for (i = 0; i < noteholder.childNodes.length; i++) {
|
710
|
+
var entry = noteholder.childNodes[i];
|
711
|
+
if (entry.nodeName == 'DIV' && entry.getAttribute("class") == "footnote")
|
712
|
+
entriesToRemove.push(entry);
|
713
|
+
}
|
714
|
+
for (i = 0; i < entriesToRemove.length; i++) {
|
715
|
+
noteholder.removeChild(entriesToRemove[i]);
|
716
|
+
}
|
717
|
+
|
718
|
+
// Rebuild footnote entries.
|
719
|
+
var cont = document.getElementById("content");
|
480
720
|
var spans = cont.getElementsByTagName("span");
|
481
721
|
var refs = {};
|
482
722
|
var n = 0;
|
483
723
|
for (i=0; i<spans.length; i++) {
|
484
724
|
if (spans[i].className == "footnote") {
|
485
725
|
n++;
|
486
|
-
|
487
|
-
|
488
|
-
|
726
|
+
var note = spans[i].getAttribute("data-note");
|
727
|
+
if (!note) {
|
728
|
+
// Use [\s\S] in place of . so multi-line matches work.
|
729
|
+
// Because JavaScript has no s (dotall) regex flag.
|
730
|
+
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
|
731
|
+
spans[i].innerHTML =
|
732
|
+
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
|
733
|
+
"' title='View footnote' class='footnote'>" + n + "</a>]";
|
734
|
+
spans[i].setAttribute("data-note", note);
|
735
|
+
}
|
489
736
|
noteholder.innerHTML +=
|
490
737
|
"<div class='footnote' id='_footnote_" + n + "'>" +
|
491
738
|
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
|
492
739
|
n + "</a>. " + note + "</div>";
|
493
|
-
spans[i].innerHTML =
|
494
|
-
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
|
495
|
-
"' title='View footnote' class='footnote'>" + n + "</a>]";
|
496
740
|
var id =spans[i].getAttribute("id");
|
497
741
|
if (id != null) refs["#"+id] = n;
|
498
742
|
}
|
@@ -512,9 +756,32 @@ footnotes: function () {
|
|
512
756
|
}
|
513
757
|
}
|
514
758
|
}
|
759
|
+
},
|
760
|
+
|
761
|
+
install: function(toclevels) {
|
762
|
+
var timerId;
|
763
|
+
|
764
|
+
function reinstall() {
|
765
|
+
asciidoc.footnotes();
|
766
|
+
if (toclevels) {
|
767
|
+
asciidoc.toc(toclevels);
|
768
|
+
}
|
769
|
+
}
|
770
|
+
|
771
|
+
function reinstallAndRemoveTimer() {
|
772
|
+
clearInterval(timerId);
|
773
|
+
reinstall();
|
774
|
+
}
|
775
|
+
|
776
|
+
timerId = setInterval(reinstall, 500);
|
777
|
+
if (document.addEventListener)
|
778
|
+
document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
|
779
|
+
else
|
780
|
+
window.onload = reinstallAndRemoveTimer;
|
515
781
|
}
|
516
782
|
|
517
783
|
}
|
784
|
+
asciidoc.install(3);
|
518
785
|
/*]]>*/
|
519
786
|
</script>
|
520
787
|
</head>
|
@@ -550,7 +817,7 @@ to exit. This does not necessarily mean that the web application speaks HTTP
|
|
550
817
|
directly: it just means that the web application accepts some kind of
|
551
818
|
representation of an HTTP request.</p></div>
|
552
819
|
<div class="paragraph"><p><span class="image">
|
553
|
-
<img src="images/typical_isolated_web_application.png" alt="Architecture of a typical web application in isolation"
|
820
|
+
<img src="images/typical_isolated_web_application.png" alt="Architecture of a typical web application in isolation">
|
554
821
|
</span></p></div>
|
555
822
|
<div class="paragraph"><p>Few web applications are accessible directly by HTTP clients. Common setups
|
556
823
|
are:</p></div>
|
@@ -605,8 +872,8 @@ considered to be a single entity; a black box if you will.</p></div>
|
|
605
872
|
<div class="paragraph"><p>It should also be noted that these setups do not enforce any particular
|
606
873
|
I/O processing implementation. The web servers, application servers, web
|
607
874
|
applications, etc. could process I/O serially (i.e. one request at a time),
|
608
|
-
could multiplex I/O with a single thread (e.g. by using <
|
609
|
-
<
|
875
|
+
could multiplex I/O with a single thread (e.g. by using <span class="monospaced">select(2)</span> or
|
876
|
+
<span class="monospaced">poll(2)</span>) or it could process I/O with multiple threads and/or multiple
|
610
877
|
processes.</p></div>
|
611
878
|
<div class="paragraph"><p>Of course, there are many variations possible. For example, load balancers
|
612
879
|
could be used. But that is outside the scope of this document.</p></div>
|
@@ -656,7 +923,7 @@ The next section contains a diagram which shows the prefork MPM’s architec
|
|
656
923
|
Passenger extends Apache and allows it to act like an application server.
|
657
924
|
Passenger’s architecture — assuming Apache 2 with the prefork MPM is used — is shown in the following diagram:</p></div>
|
658
925
|
<div class="paragraph"><p><span class="image">
|
659
|
-
<img src="images/passenger_architecture.png" alt="Passenger’s architecture"
|
926
|
+
<img src="images/passenger_architecture.png" alt="Passenger’s architecture">
|
660
927
|
</span></p></div>
|
661
928
|
<div class="paragraph"><p>Passenger consists of an Apache module, <em>mod_passenger</em>. This is written in
|
662
929
|
C++, and can be found in the directory <em>ext/apache2</em>. The module is active in
|
@@ -737,8 +1004,8 @@ worker process will communicate directly with the Rails application.</p></div>
|
|
737
1004
|
<div class="paragraph"><p>The application pool is implemented inside <em>mod_passenger</em>. One can find
|
738
1005
|
detailed documentation about it in
|
739
1006
|
<a href="cxxapi/index.html">the C++ API documentation</a>,
|
740
|
-
in particular the documentation about the <
|
741
|
-
<
|
1007
|
+
in particular the documentation about the <span class="monospaced">ApplicationPool</span>,
|
1008
|
+
<span class="monospaced">StandardApplicationPool</span> and <span class="monospaced">ApplicationPoolServer</span> classes.</p></div>
|
742
1009
|
<div class="paragraph"><p>The application pool is responsible for spawning applications, caching
|
743
1010
|
spawned applications' handles, and cleaning up applications which have been
|
744
1011
|
idle for an extended period of time.</p></div>
|
@@ -780,7 +1047,7 @@ implementation in detail.</p></div>
|
|
780
1047
|
</li>
|
781
1048
|
</ol></div>
|
782
1049
|
<div class="paragraph"><p><span class="image">
|
783
|
-
<img src="images/spawn_server_architecture.png" alt="The spawn server’s architecture"
|
1050
|
+
<img src="images/spawn_server_architecture.png" alt="The spawn server’s architecture">
|
784
1051
|
</span></p></div>
|
785
1052
|
<div class="paragraph"><p>As you can see, we have two layers of code caching: when the spawn server
|
786
1053
|
receives a request to spawn a new application instance, it will forward the
|
@@ -815,7 +1082,7 @@ memory usage.</p></div>
|
|
815
1082
|
<div class="admonitionblock">
|
816
1083
|
<table><tr>
|
817
1084
|
<td class="icon">
|
818
|
-
<img src="./images/icons/note.png" alt="Note"
|
1085
|
+
<img src="./images/icons/note.png" alt="Note">
|
819
1086
|
</td>
|
820
1087
|
<td class="content">
|
821
1088
|
<div class="paragraph"><p>Sharing memory only works if <a href="http://www.rubyenterpriseedition.com/">Ruby
|
@@ -876,13 +1143,13 @@ algorithm, which is non-trivial. The algorithm is documented in detail in
|
|
876
1143
|
Attribution-Share Alike 3.0 Unported License</a>.</p></div>
|
877
1144
|
<div class="paragraph"><p><span class="image">
|
878
1145
|
<a class="image" href="link:http://creativecommons.org/licenses/by-sa/3.0/">
|
879
|
-
<img src="images/by_sa.png" alt="images/by_sa.png"
|
1146
|
+
<img src="images/by_sa.png" alt="images/by_sa.png">
|
880
1147
|
</a>
|
881
1148
|
</span></p></div>
|
882
1149
|
</div>
|
883
1150
|
</div>
|
884
1151
|
</div>
|
885
|
-
<div id="footnotes"><hr
|
1152
|
+
<div id="footnotes"><hr></div>
|
886
1153
|
<div id="footer">
|
887
1154
|
<div id="footer-text">
|
888
1155
|
Last updated 2010-09-25 20:09:08 CEST
|