passenger 5.1.12 → 5.2.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG +18 -1
- data/Rakefile +4 -1
- data/build/agent.rb +2 -2
- data/build/apache2.rb +17 -10
- data/build/basics.rb +18 -4
- data/build/common_library.rb +7 -3
- data/build/cxx_tests.rb +2 -7
- data/build/misc.rb +3 -1
- data/build/nginx.rb +11 -5
- data/build/oxt_tests.rb +0 -3
- data/build/packaging.rb +3 -2
- data/build/schema_printer.rb +103 -0
- data/build/support/cplusplus.rb +2 -2
- data/build/support/cxx_dependency_map.rb +2575 -868
- data/dev/ci/lib/functions.sh +1 -1
- data/dev/ci/lib/set-container-envvars.sh +1 -1
- data/dev/ci/lib/setup-container.sh +1 -1
- data/dev/ci/run-tests-natively +1 -1
- data/dev/ci/run-tests-with-docker +1 -1
- data/dev/ci/scripts/debug-console-wrapper.sh +1 -1
- data/dev/ci/scripts/docker-entrypoint-stage2.sh +1 -1
- data/dev/ci/scripts/docker-entrypoint.sh +1 -1
- data/dev/ci/scripts/inituidgid +1 -1
- data/dev/ci/scripts/run-tests-natively-stage2.sh +1 -1
- data/dev/ci/scripts/setup-host-natively.sh +1 -1
- data/dev/ci/setup-host +1 -1
- data/dev/ci/tests/apache2/run +1 -1
- data/dev/ci/tests/apache2/setup +1 -1
- data/dev/ci/tests/cxx/run +1 -1
- data/dev/ci/tests/cxx/setup +1 -1
- data/dev/ci/tests/debian/Jenkinsfile +0 -1
- data/dev/ci/tests/debian/run +1 -1
- data/dev/ci/tests/nginx-dynamic/run +1 -1
- data/dev/ci/tests/nginx-dynamic/setup +1 -1
- data/dev/ci/tests/nginx/run +1 -1
- data/dev/ci/tests/nginx/setup +1 -1
- data/dev/ci/tests/nodejs/run +1 -1
- data/dev/ci/tests/nodejs/setup +1 -1
- data/dev/ci/tests/rpm/run +1 -1
- data/dev/ci/tests/ruby/run +1 -1
- data/dev/ci/tests/ruby/setup +1 -1
- data/dev/ci/tests/source-packaging/run +1 -1
- data/dev/ci/tests/source-packaging/setup +1 -1
- data/dev/ci/tests/standalone/run +1 -1
- data/dev/ci/tests/standalone/setup +1 -1
- data/dev/configkit-schemas/index.json +1708 -0
- data/dev/configkit-schemas/update_schema_inline_comments.rb +118 -0
- data/dev/copy_boost_headers +13 -1
- data/dev/index_cxx_dependencies.rb +20 -7
- data/dev/vagrant/provision.sh +1 -1
- data/resources/mime.types +1 -0
- data/resources/templates/standalone/http.erb +1 -6
- data/src/agent/Core/AdminPanelConnector.h +550 -0
- data/src/agent/Core/ApiServer.h +159 -97
- data/src/agent/Core/ApplicationPool/Group.h +2 -0
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +3 -2
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +109 -0
- data/src/agent/Core/ApplicationPool/Implementation.cpp +5 -3
- data/src/agent/Core/ApplicationPool/Options.h +5 -6
- data/src/agent/Core/ApplicationPool/Pool.h +59 -2
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +3 -3
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +6 -0
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +129 -0
- data/src/agent/Core/Config.h +475 -0
- data/src/agent/Core/ConfigChange.cpp +349 -0
- data/src/agent/Core/ConfigChange.h +54 -0
- data/src/agent/Core/Controller.h +35 -3
- data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
- data/src/agent/Core/Controller/Config.cpp +0 -2
- data/src/agent/Core/Controller/Config.h +168 -104
- data/src/agent/Core/Controller/ForwardResponse.cpp +1 -1
- data/src/agent/Core/Controller/InitRequest.cpp +14 -15
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +34 -44
- data/src/agent/Core/Controller/Request.h +0 -1
- data/src/agent/Core/CoreMain.cpp +236 -349
- data/src/agent/Core/OptionParser.h +75 -89
- data/src/agent/Core/SecurityUpdateChecker.h +263 -100
- data/src/agent/Core/SpawningKit/Config.h +6 -2
- data/src/agent/Core/SpawningKit/Spawner.h +0 -45
- data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -0
- data/src/agent/Shared/ApiAccountUtils.h +318 -0
- data/src/agent/Shared/ApiServerUtils.h +3 -104
- data/src/agent/Shared/Fundamentals/Initialization.cpp +81 -44
- data/src/agent/Shared/Fundamentals/Initialization.h +12 -7
- data/src/agent/TempDirToucher/TempDirToucherMain.cpp +21 -0
- data/src/agent/Watchdog/AgentWatcher.cpp +1 -1
- data/src/agent/Watchdog/ApiServer.h +100 -14
- data/src/agent/Watchdog/Config.h +340 -0
- data/src/agent/Watchdog/CoreWatcher.cpp +27 -13
- data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +190 -206
- data/src/apache2_module/Bucket.cpp +4 -0
- data/src/apache2_module/Bucket.h +7 -3
- data/src/apache2_module/CBindings.cpp +49 -0
- data/src/apache2_module/Config.cpp +242 -0
- data/src/apache2_module/Config.h +109 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +485 -0
- data/src/apache2_module/{ConfigurationCommands.cpp.cxxcodebuilder → ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder} +29 -15
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +298 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +171 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +854 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +188 -0
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +610 -0
- data/src/apache2_module/ConfigGeneral/SetterFuncs.h +65 -0
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +174 -0
- data/src/apache2_module/{MergeDirConfig.cpp.cxxcodebuilder → DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder} +54 -32
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +113 -0
- data/src/apache2_module/{SetHeaders.cpp.cxxcodebuilder → DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder} +34 -23
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +426 -0
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +165 -0
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +269 -0
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +148 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +534 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +230 -0
- data/src/apache2_module/DirectoryMapper.h +19 -16
- data/src/apache2_module/Hooks.cpp +124 -138
- data/src/apache2_module/Hooks.h +9 -14
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +263 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +152 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +299 -0
- data/src/apache2_module/{ConfigurationFields.hpp.cxxcodebuilder → ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder} +105 -18
- data/src/apache2_module/Utils.h +215 -0
- data/src/apache2_module/mod_passenger.c +16 -8
- data/src/cxx_supportlib/AppTypes.h +2 -0
- data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
- data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +8 -8
- data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +7 -41
- data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +12 -66
- data/src/cxx_supportlib/ConfigKit/Schema.h +62 -11
- data/src/cxx_supportlib/ConfigKit/{ValidationUtils.h → SchemaUtils.h} +12 -3
- data/src/cxx_supportlib/ConfigKit/Store.h +17 -9
- data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -1
- data/src/cxx_supportlib/ConfigKit/TableTranslator.h +13 -70
- data/src/cxx_supportlib/ConfigKit/Translator.h +125 -0
- data/src/cxx_supportlib/Constants.h +1 -3
- data/src/cxx_supportlib/FileTools/FileManip.cpp +297 -0
- data/src/cxx_supportlib/FileTools/FileManip.h +162 -0
- data/src/cxx_supportlib/{Utils → FileTools}/LargeFiles.cpp +6 -3
- data/src/cxx_supportlib/{Utils → FileTools}/LargeFiles.h +7 -5
- data/src/cxx_supportlib/FileTools/PathManip.cpp +240 -0
- data/src/cxx_supportlib/FileTools/PathManip.h +91 -0
- data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +62 -0
- data/src/{apache2_module/Configuration.h → cxx_supportlib/FileTools/PathManipCBindings.h} +12 -19
- data/src/cxx_supportlib/Hooks.h +19 -16
- data/src/cxx_supportlib/InstanceDirectory.h +11 -0
- data/src/cxx_supportlib/JsonTools/Autocast.h +79 -0
- data/src/cxx_supportlib/JsonTools/CBindings.cpp +364 -0
- data/src/cxx_supportlib/JsonTools/CBindings.h +101 -0
- data/src/cxx_supportlib/LoggingKit/Config.h +13 -0
- data/src/cxx_supportlib/LoggingKit/Context.h +5 -2
- data/src/cxx_supportlib/LoggingKit/Forward.h +0 -1
- data/src/cxx_supportlib/LoggingKit/Implementation.cpp +12 -4
- data/src/cxx_supportlib/ResourceLocator.h +15 -0
- data/src/cxx_supportlib/ServerKit/Config.h +156 -0
- data/src/cxx_supportlib/ServerKit/Context.h +59 -38
- data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpServer.h +16 -2
- data/src/cxx_supportlib/ServerKit/Server.h +32 -15
- data/src/cxx_supportlib/Utils.cpp +0 -441
- data/src/cxx_supportlib/Utils.h +0 -158
- data/src/cxx_supportlib/Utils/Curl.h +1 -0
- data/src/cxx_supportlib/Utils/ProcessMetricsCollector.h +1 -0
- data/src/cxx_supportlib/Utils/StrIntUtilsNoStrictAliasing.cpp +2 -0
- data/src/cxx_supportlib/Utils/VariantMap.h +31 -0
- data/src/cxx_supportlib/WatchdogLauncher.cpp +7 -79
- data/src/cxx_supportlib/WatchdogLauncher.h +50 -53
- data/src/cxx_supportlib/WebSocketCommandReverseServer.h +981 -0
- data/src/cxx_supportlib/oxt/macros.hpp +9 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/COPYING +145 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +342 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +49 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/base64/base64.hpp +178 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/client.hpp +33 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +342 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +131 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio_ssl.hpp +39 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/chrono.hpp +68 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/connection_hdl.hpp +52 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/cpp11.hpp +162 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/functional.hpp +105 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/md5.hpp +448 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +89 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/network.hpp +106 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/platforms.hpp +46 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/random.hpp +82 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/regex.hpp +59 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/stdint.hpp +73 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/system_error.hpp +84 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +84 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/time.hpp +56 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/type_traits.hpp +65 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/concurrency/basic.hpp +46 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/concurrency/none.hpp +80 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio.hpp +77 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_client.hpp +77 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_no_tls.hpp +73 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/asio_no_tls_client.hpp +73 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/boost_config.hpp +72 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +285 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core_client.hpp +294 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug.hpp +286 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug_asio.hpp +77 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/debug_asio_no_tls.hpp +73 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/minimal_client.hpp +72 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/minimal_server.hpp +312 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +1651 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection_base.hpp +38 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +700 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint_base.hpp +38 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/error.hpp +277 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/extension.hpp +102 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +128 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +752 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +861 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/constants.hpp +308 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +196 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/request.hpp +191 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/response.hpp +266 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +619 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/request.hpp +124 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/response.hpp +188 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +2372 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +269 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/utilities_impl.hpp +87 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/basic.hpp +199 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/levels.hpp +203 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/stub.hpp +119 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/logger/syslog.hpp +146 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/alloc.hpp +105 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/message.hpp +340 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/message_buffer/pool.hpp +229 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +299 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi00.hpp +462 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi07.hpp +78 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi08.hpp +83 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +1056 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/processor.hpp +407 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/random/none.hpp +60 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/random/random_device.hpp +80 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +173 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +190 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/server.hpp +33 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/base.hpp +232 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +1204 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +1147 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/base.hpp +159 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +370 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +484 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/connection.hpp +238 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +77 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/base.hpp +104 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +412 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +140 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/base.hpp +133 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +714 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +222 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/base.hpp +95 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +286 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/endpoint.hpp +140 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +355 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utf8_validator.hpp +154 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +182 -0
- data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +96 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +951 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +520 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +258 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +942 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +567 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +697 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +386 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +1519 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +1137 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +288 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +569 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +854 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +371 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +521 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2241 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +246 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +260 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +238 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +483 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +220 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +825 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +330 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +438 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +491 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +385 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +127 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +192 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +1050 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +294 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +229 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +119 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +208 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +244 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +85 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/function.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +99 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +161 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +480 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +333 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +120 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +453 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +432 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +688 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +167 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +307 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +498 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +126 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +210 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +153 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +269 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +315 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +190 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +649 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +3470 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +178 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +120 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +178 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.ipp +476 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +103 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +222 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/limits.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +500 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +62 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +216 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +158 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +120 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +66 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +324 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +236 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +138 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +108 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +125 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +135 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +127 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +125 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +460 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +452 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +170 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +123 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +103 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +221 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +146 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +218 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +336 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +318 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +410 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +178 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service.hpp +203 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service_operation.hpp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/task_io_service_thread_info.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +333 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +95 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +85 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +230 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +293 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +345 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +195 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +125 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +135 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +123 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +124 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +360 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +340 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +432 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +156 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +157 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +755 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +812 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +1149 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +556 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +355 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +767 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +827 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +772 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +202 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +243 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +248 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +265 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +96 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +262 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +246 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +141 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +206 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +571 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +228 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +193 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +178 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +157 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +113 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +71 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +241 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +135 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +130 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +125 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +492 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +364 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +99 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +262 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +438 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +633 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +666 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +925 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +386 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +255 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +308 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +522 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +267 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +789 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +194 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +112 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +327 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +351 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +103 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +62 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +115 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +1177 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +168 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +436 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +176 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +396 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +526 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +573 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +503 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +186 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +758 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +254 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +382 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +88 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +170 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +283 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +378 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +361 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +118 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +222 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +220 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +620 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +672 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/chrono.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/chrono_io.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/chrono.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +242 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +356 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +354 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/process_cpu_clocks.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/thread_clock.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/no_warning/signed_unsigned_cmp.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +163 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/floor.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/include.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +593 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +295 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +317 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +1003 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/ios_base_state.hpp +152 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_get.hpp +330 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1243 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_put.hpp +261 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +260 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +437 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/manip_base.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/to_string.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +637 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +525 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/round.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/thread_clock.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/typeof/boost/chrono/chrono.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/typeof/boost/ratio.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +460 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +112 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +126 -0
- data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/chrono.cpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/process_cpu_clocks.cpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/chrono/src/thread_clock.cpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +250 -0
- data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/random.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/additive_combine.hpp +283 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/bernoulli_distribution.hpp +197 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +184 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +434 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/cauchy_distribution.hpp +214 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/chi_squared_distribution.hpp +209 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/auto_link.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/const_mod.hpp +216 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/disable_warnings.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/enable_warnings.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/generator_bits.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/generator_seed_seq.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/int_float_pair.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/iterator_mixin.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/large_arithmetic.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/operators.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/polynomial.hpp +384 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/ptr_helper.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed.hpp +115 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/seed_impl.hpp +398 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/signed_unsigned_tools.hpp +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/uniform_int_float.hpp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discard_block.hpp +241 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +636 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/exponential_distribution.hpp +386 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/extreme_value_distribution.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/fisher_f_distribution.hpp +183 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +292 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/generate_canonical.hpp +96 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/geometric_distribution.hpp +267 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +883 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +271 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/inversive_congruential.hpp +267 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/lagged_fibonacci.hpp +537 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/laplace_distribution.hpp +175 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +466 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/linear_feedback_shift.hpp +217 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/lognormal_distribution.hpp +254 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +682 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/negative_binomial_distribution.hpp +220 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/non_central_chi_squared_distribution.hpp +221 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/normal_distribution.hpp +374 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +466 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +531 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +360 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/random_device.hpp +143 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/random_number_generator.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/ranlux.hpp +99 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +118 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_order.hpp +269 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/shuffle_output.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/student_t_distribution.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/subtract_with_carry.hpp +613 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/taus88.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/traits.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/triangle_distribution.hpp +232 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_01.hpp +257 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int.hpp +99 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +419 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +284 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_real_distribution.hpp +241 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_smallint.hpp +307 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/variate_generator.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/weibull_distribution.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/xor_combine.hpp +208 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/ratio_io.hpp +1342 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/include.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/abs.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/arithmetic.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/comparison.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/divides.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/equal_to.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/gcd.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/greater_equal.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/lcm.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/less_equal.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/minus.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/negate.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/not_equal_to.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/numeric_cast.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/plus.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_c_tag.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/rational_constant.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/sign.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/mpl/times.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_io.hpp +1076 -0
- data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1002 -0
- data/src/cxx_supportlib/vendor-modified/modp_b64.cpp +11 -0
- data/src/helper-scripts/rack-preloader.rb +1 -1
- data/src/nginx_module/{ConfigurationCommands.c → ConfigGeneral/AutoGeneratedDefinitions.c} +351 -134
- data/src/nginx_module/{ConfigurationCommands.c.cxxcodebuilder → ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder} +14 -25
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +396 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +160 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +831 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +168 -0
- data/src/nginx_module/ConfigGeneral/ManifestGeneration.c +887 -0
- data/src/nginx_module/ConfigGeneral/ManifestGeneration.h +100 -0
- data/src/nginx_module/Configuration.c +165 -621
- data/src/nginx_module/Configuration.h +43 -33
- data/src/nginx_module/ContentHandler.c +46 -40
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +282 -0
- data/src/nginx_module/{CreateLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder} +43 -17
- data/src/nginx_module/{CacheLocationConfig.c → LocationConfig/AutoGeneratedHeaderSerialization.c} +148 -180
- data/src/nginx_module/{CacheLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder} +13 -11
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +595 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +190 -0
- data/src/nginx_module/{MergeLocationConfig.c → LocationConfig/AutoGeneratedMergeFunction.c} +32 -42
- data/src/nginx_module/{MergeLocationConfig.c.cxxcodebuilder → LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder} +18 -11
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +220 -0
- data/src/nginx_module/{LocationConfig.h.cxxcodebuilder → LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder} +70 -48
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +163 -0
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +125 -0
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +303 -0
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +173 -0
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +133 -0
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +154 -0
- data/src/nginx_module/config +13 -4
- data/src/nginx_module/ngx_http_passenger_module.c +154 -84
- data/src/ruby_supportlib/phusion_passenger.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +613 -131
- data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +52 -0
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +18 -4
- data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +104 -0
- data/src/ruby_supportlib/phusion_passenger/constants.rb +0 -2
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +470 -138
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info.rb +17 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +11 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +7 -7
- data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +293 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +8 -54
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +4 -7
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
- data/src/schema_printer/SchemaPrinterMain.cpp +78 -0
- data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +116 -0
- metadata +671 -30
- data/src/apache2_module/Configuration.cpp +0 -737
- data/src/apache2_module/Configuration.hpp +0 -274
- data/src/apache2_module/ConfigurationCommands.cpp +0 -199
- data/src/apache2_module/ConfigurationFields.hpp +0 -187
- data/src/apache2_module/ConfigurationSetters.cpp +0 -436
- data/src/apache2_module/ConfigurationSetters.cpp.cxxcodebuilder +0 -144
- data/src/apache2_module/CreateDirConfig.cpp +0 -68
- data/src/apache2_module/CreateDirConfig.cpp.cxxcodebuilder +0 -81
- data/src/apache2_module/MergeDirConfig.cpp +0 -155
- data/src/apache2_module/SetHeaders.cpp +0 -111
- data/src/nginx_module/CreateLocationConfig.c +0 -100
- data/src/nginx_module/LocationConfig.h +0 -95
@@ -44,41 +44,13 @@ using namespace boost;
|
|
44
44
|
*
|
45
45
|
****************************/
|
46
46
|
|
47
|
+
Controller::~Controller() {
|
48
|
+
ev_check_stop(getLoop(), &checkWatcher);
|
49
|
+
delete singleAppModeConfig;
|
50
|
+
}
|
47
51
|
|
48
|
-
|
49
|
-
|
50
|
-
: ParentClass(context, schema, initialConfig),
|
51
|
-
|
52
|
-
mainConfig(config),
|
53
|
-
requestConfig(new ControllerRequestConfig(config)),
|
54
|
-
poolOptionsCache(4),
|
55
|
-
|
56
|
-
PASSENGER_APP_GROUP_NAME("!~PASSENGER_APP_GROUP_NAME"),
|
57
|
-
PASSENGER_ENV_VARS("!~PASSENGER_ENV_VARS"),
|
58
|
-
PASSENGER_MAX_REQUESTS("!~PASSENGER_MAX_REQUESTS"),
|
59
|
-
PASSENGER_SHOW_VERSION_IN_HEADER("!~PASSENGER_SHOW_VERSION_IN_HEADER"),
|
60
|
-
PASSENGER_STICKY_SESSIONS("!~PASSENGER_STICKY_SESSIONS"),
|
61
|
-
PASSENGER_STICKY_SESSIONS_COOKIE_NAME("!~PASSENGER_STICKY_SESSIONS_COOKIE_NAME"),
|
62
|
-
PASSENGER_REQUEST_OOB_WORK("!~Request-OOB-Work"),
|
63
|
-
UNION_STATION_SUPPORT("!~UNION_STATION_SUPPORT"),
|
64
|
-
REMOTE_ADDR("!~REMOTE_ADDR"),
|
65
|
-
REMOTE_PORT("!~REMOTE_PORT"),
|
66
|
-
REMOTE_USER("!~REMOTE_USER"),
|
67
|
-
FLAGS("!~FLAGS"),
|
68
|
-
HTTP_COOKIE("cookie"),
|
69
|
-
HTTP_DATE("date"),
|
70
|
-
HTTP_HOST("host"),
|
71
|
-
HTTP_CONTENT_LENGTH("content-length"),
|
72
|
-
HTTP_CONTENT_TYPE("content-type"),
|
73
|
-
HTTP_EXPECT("expect"),
|
74
|
-
HTTP_CONNECTION("connection"),
|
75
|
-
HTTP_STATUS("status"),
|
76
|
-
HTTP_TRANSFER_ENCODING("transfer-encoding"),
|
77
|
-
|
78
|
-
turboCaching(),
|
79
|
-
resourceLocator(NULL)
|
80
|
-
/**************************/
|
81
|
-
{
|
52
|
+
void
|
53
|
+
Controller::preinitialize() {
|
82
54
|
ev_check_init(&checkWatcher, onEventLoopCheck);
|
83
55
|
ev_set_priority(&checkWatcher, EV_MAXPRI);
|
84
56
|
ev_check_start(getLoop(), &checkWatcher);
|
@@ -91,10 +63,30 @@ Controller::Controller(ServerKit::Context *context, const ControllerSchema &sche
|
|
91
63
|
|
92
64
|
timeBeforeBlocking = 0;
|
93
65
|
#endif
|
94
|
-
}
|
95
66
|
|
96
|
-
|
97
|
-
|
67
|
+
PASSENGER_APP_GROUP_NAME = "!~PASSENGER_APP_GROUP_NAME";
|
68
|
+
PASSENGER_ENV_VARS = "!~PASSENGER_ENV_VARS";
|
69
|
+
PASSENGER_MAX_REQUESTS = "!~PASSENGER_MAX_REQUESTS";
|
70
|
+
PASSENGER_SHOW_VERSION_IN_HEADER = "!~PASSENGER_SHOW_VERSION_IN_HEADER";
|
71
|
+
PASSENGER_STICKY_SESSIONS = "!~PASSENGER_STICKY_SESSIONS";
|
72
|
+
PASSENGER_STICKY_SESSIONS_COOKIE_NAME = "!~PASSENGER_STICKY_SESSIONS_COOKIE_NAME";
|
73
|
+
PASSENGER_REQUEST_OOB_WORK = "!~Request-OOB-Work";
|
74
|
+
UNION_STATION_SUPPORT = "!~UNION_STATION_SUPPORT";
|
75
|
+
REMOTE_ADDR = "!~REMOTE_ADDR";
|
76
|
+
REMOTE_PORT = "!~REMOTE_PORT";
|
77
|
+
REMOTE_USER = "!~REMOTE_USER";
|
78
|
+
FLAGS = "!~FLAGS";
|
79
|
+
HTTP_COOKIE = "cookie";
|
80
|
+
HTTP_DATE = "date";
|
81
|
+
HTTP_HOST = "host";
|
82
|
+
HTTP_CONTENT_LENGTH = "content-length";
|
83
|
+
HTTP_CONTENT_TYPE = "content-type";
|
84
|
+
HTTP_EXPECT = "expect";
|
85
|
+
HTTP_CONNECTION = "connection";
|
86
|
+
HTTP_STATUS = "status";
|
87
|
+
HTTP_TRANSFER_ENCODING = "transfer-encoding";
|
88
|
+
|
89
|
+
/**************************/
|
98
90
|
}
|
99
91
|
|
100
92
|
void
|
@@ -112,17 +104,15 @@ Controller::initialize() {
|
|
112
104
|
|
113
105
|
ParentClass::initialize();
|
114
106
|
turboCaching.initialize(config["turbocaching"].asBool());
|
115
|
-
getContext()->defaultFileBufferedChannelConfig.bufferDir =
|
116
|
-
config["data_buffer_dir"].asString();
|
117
107
|
|
118
|
-
if (
|
108
|
+
if (mainConfig.singleAppMode) {
|
119
109
|
boost::shared_ptr<Options> options = boost::make_shared<Options>();
|
120
110
|
fillPoolOptionsFromConfigCaches(*options, mainConfig.pool, requestConfig);
|
121
111
|
|
122
|
-
string appRoot =
|
123
|
-
string environment = config["
|
124
|
-
string appType =
|
125
|
-
string startupFile =
|
112
|
+
string appRoot = singleAppModeConfig->get("app_root").asString();
|
113
|
+
string environment = config["default_environment"].asString();
|
114
|
+
string appType = singleAppModeConfig->get("app_type").asString();
|
115
|
+
string startupFile = singleAppModeConfig->get("startup_file").asString();
|
126
116
|
|
127
117
|
options->appRoot = appRoot;
|
128
118
|
options->environment = environment;
|
data/src/agent/Core/CoreMain.cpp
CHANGED
@@ -36,6 +36,8 @@
|
|
36
36
|
#include <selinux/selinux.h>
|
37
37
|
#endif
|
38
38
|
|
39
|
+
#include <boost/config.hpp>
|
40
|
+
#include <boost/scoped_ptr.hpp>
|
39
41
|
#include <sys/types.h>
|
40
42
|
#include <sys/socket.h>
|
41
43
|
#include <sys/stat.h>
|
@@ -74,6 +76,8 @@
|
|
74
76
|
#include <Shared/Fundamentals/Initialization.h>
|
75
77
|
#include <Shared/ApiServerUtils.h>
|
76
78
|
#include <Constants.h>
|
79
|
+
#include <LoggingKit/Context.h>
|
80
|
+
#include <ConfigKit/SubComponentUtils.h>
|
77
81
|
#include <ServerKit/Server.h>
|
78
82
|
#include <ServerKit/AcceptLoadBalancer.h>
|
79
83
|
#include <ConfigKit/VariantMapUtils.h>
|
@@ -81,6 +85,7 @@
|
|
81
85
|
#include <FileDescriptor.h>
|
82
86
|
#include <ResourceLocator.h>
|
83
87
|
#include <BackgroundEventLoop.cpp>
|
88
|
+
#include <FileTools/FileManip.h>
|
84
89
|
#include <Exceptions.h>
|
85
90
|
#include <Utils.h>
|
86
91
|
#include <Utils/Timer.h>
|
@@ -90,9 +95,12 @@
|
|
90
95
|
#include <Core/OptionParser.h>
|
91
96
|
#include <Core/Controller.h>
|
92
97
|
#include <Core/ApiServer.h>
|
98
|
+
#include <Core/Config.h>
|
99
|
+
#include <Core/ConfigChange.h>
|
93
100
|
#include <Core/ApplicationPool/Pool.h>
|
94
101
|
#include <Core/UnionStation/Context.h>
|
95
102
|
#include <Core/SecurityUpdateChecker.h>
|
103
|
+
#include <Core/AdminPanelConnector.h>
|
96
104
|
|
97
105
|
using namespace boost;
|
98
106
|
using namespace oxt;
|
@@ -120,7 +128,6 @@ namespace Core {
|
|
120
128
|
struct ApiWorkingObjects {
|
121
129
|
BackgroundEventLoop *bgloop;
|
122
130
|
ServerKit::Context *serverKitContext;
|
123
|
-
ServerKit::HttpServerSchema apiServerSchema;
|
124
131
|
ApiServer::ApiServer *apiServer;
|
125
132
|
|
126
133
|
ApiWorkingObjects()
|
@@ -133,8 +140,9 @@ namespace Core {
|
|
133
140
|
struct WorkingObjects {
|
134
141
|
int serverFds[SERVER_KIT_MAX_SERVER_ENDPOINTS];
|
135
142
|
int apiServerFds[SERVER_KIT_MAX_SERVER_ENDPOINTS];
|
136
|
-
string
|
137
|
-
|
143
|
+
string controllerSecureHeadersPassword;
|
144
|
+
|
145
|
+
boost::mutex configSyncher;
|
138
146
|
|
139
147
|
ResourceLocator resourceLocator;
|
140
148
|
RandomGeneratorPtr randomGenerator;
|
@@ -142,9 +150,9 @@ namespace Core {
|
|
142
150
|
SpawningKit::ConfigPtr spawningKitConfig;
|
143
151
|
SpawningKit::FactoryPtr spawningKitFactory;
|
144
152
|
PoolPtr appPool;
|
153
|
+
Json::Value singleAppModeConfig;
|
145
154
|
|
146
155
|
ServerKit::AcceptLoadBalancer<Controller> loadBalancer;
|
147
|
-
ControllerSchema controllerSchema;
|
148
156
|
vector<ThreadWorkingObjects> threadWorkingObjects;
|
149
157
|
struct ev_signal sigintWatcher;
|
150
158
|
struct ev_signal sigtermWatcher;
|
@@ -159,6 +167,8 @@ namespace Core {
|
|
159
167
|
oxt::thread *prestarterThread;
|
160
168
|
|
161
169
|
SecurityUpdateChecker *securityUpdateChecker;
|
170
|
+
AdminPanelConnector *adminPanelConnector;
|
171
|
+
oxt::thread *adminPanelConnectorThread;
|
162
172
|
|
163
173
|
WorkingObjects()
|
164
174
|
: exitEvent(__FILE__, __LINE__, "WorkingObjects: exitEvent"),
|
@@ -166,7 +176,10 @@ namespace Core {
|
|
166
176
|
terminationCount(0),
|
167
177
|
shutdownCounter(0),
|
168
178
|
prestarterThread(NULL),
|
169
|
-
securityUpdateChecker(NULL)
|
179
|
+
securityUpdateChecker(NULL),
|
180
|
+
adminPanelConnector(NULL),
|
181
|
+
adminPanelConnectorThread(NULL)
|
182
|
+
/*******************/
|
170
183
|
{
|
171
184
|
for (unsigned int i = 0; i < SERVER_KIT_MAX_SERVER_ENDPOINTS; i++) {
|
172
185
|
serverFds[i] = -1;
|
@@ -176,9 +189,12 @@ namespace Core {
|
|
176
189
|
|
177
190
|
~WorkingObjects() {
|
178
191
|
delete prestarterThread;
|
179
|
-
|
180
|
-
|
181
|
-
|
192
|
+
delete adminPanelConnectorThread;
|
193
|
+
delete adminPanelConnector;
|
194
|
+
delete securityUpdateChecker;
|
195
|
+
|
196
|
+
/*******************/
|
197
|
+
/*******************/
|
182
198
|
|
183
199
|
vector<ThreadWorkingObjects>::iterator it, end = threadWorkingObjects.end();
|
184
200
|
for (it = threadWorkingObjects.begin(); it != end; it++) {
|
@@ -197,9 +213,12 @@ namespace Core {
|
|
197
213
|
|
198
214
|
using namespace Passenger::Core;
|
199
215
|
|
200
|
-
static
|
216
|
+
static Schema *coreSchema;
|
217
|
+
static ConfigKit::Store *coreConfig;
|
201
218
|
static WorkingObjects *workingObjects;
|
202
219
|
|
220
|
+
#include <Core/ConfigChange.cpp>
|
221
|
+
|
203
222
|
|
204
223
|
/***** Core stuff *****/
|
205
224
|
|
@@ -207,6 +226,7 @@ static void waitForExitEvent();
|
|
207
226
|
static void cleanup();
|
208
227
|
static void deletePidFile();
|
209
228
|
static void abortLongRunningConnections(const ApplicationPool2::ProcessPtr &process);
|
229
|
+
static void serverShutdownFinished();
|
210
230
|
static void controllerShutdownFinished(Controller *controller);
|
211
231
|
static void apiServerShutdownFinished(Core::ApiServer::ApiServer *server);
|
212
232
|
static void printInfoInThread();
|
@@ -214,73 +234,75 @@ static void printInfoInThread();
|
|
214
234
|
static void
|
215
235
|
initializePrivilegedWorkingObjects() {
|
216
236
|
TRACE_POINT();
|
217
|
-
const VariantMap &options = *agentsOptions;
|
218
237
|
WorkingObjects *wo = workingObjects = new WorkingObjects();
|
219
238
|
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
if (
|
224
|
-
wo->password.
|
225
|
-
} else if (wo->password.empty() && options.has("core_password_file")) {
|
226
|
-
wo->password = strip(readAll(options.get("core_password_file")));
|
227
|
-
}
|
228
|
-
|
229
|
-
vector<string> authorizations = options.getStrSet("core_authorizations",
|
230
|
-
false);
|
231
|
-
string description;
|
232
|
-
|
233
|
-
UPDATE_TRACE_POINT();
|
234
|
-
foreach (description, authorizations) {
|
235
|
-
try {
|
236
|
-
wo->apiAccountDatabase.add(description);
|
237
|
-
} catch (const ArgumentException &e) {
|
238
|
-
throw std::runtime_error(e.what());
|
239
|
-
}
|
239
|
+
Json::Value password = coreConfig->get("controller_secure_headers_password");
|
240
|
+
if (password.isString()) {
|
241
|
+
wo->controllerSecureHeadersPassword = password.asString();
|
242
|
+
} else if (password.isObject()) {
|
243
|
+
wo->controllerSecureHeadersPassword = strip(readAll(password["path"].asString()));
|
240
244
|
}
|
241
245
|
}
|
242
246
|
|
243
247
|
static void
|
244
248
|
initializeSingleAppMode() {
|
245
249
|
TRACE_POINT();
|
246
|
-
VariantMap &options = *agentsOptions;
|
247
250
|
|
248
|
-
if (
|
251
|
+
if (coreConfig->get("multi_app").asBool()) {
|
249
252
|
P_NOTICE(SHORT_PROGRAM_NAME " core running in multi-application mode.");
|
250
253
|
return;
|
251
254
|
}
|
252
255
|
|
253
|
-
|
256
|
+
WorkingObjects *wo = workingObjects;
|
257
|
+
string appType, startupFile;
|
258
|
+
string appRoot = coreConfig->get("single_app_mode_app_root").asString();
|
259
|
+
|
260
|
+
if (coreConfig->get("single_app_mode_app_type").isNull()) {
|
254
261
|
P_DEBUG("Autodetecting application type...");
|
255
262
|
AppTypeDetector detector(NULL, 0);
|
256
|
-
PassengerAppType
|
257
|
-
if (
|
263
|
+
PassengerAppType appTypeEnum = detector.checkAppRoot(appRoot);
|
264
|
+
if (appTypeEnum == PAT_NONE || appTypeEnum == PAT_ERROR) {
|
258
265
|
fprintf(stderr, "ERROR: unable to autodetect what kind of application "
|
259
266
|
"lives in %s. Please specify information about the app using "
|
260
267
|
"--app-type and --startup-file, or specify a correct location to "
|
261
268
|
"the application you want to serve.\n"
|
262
269
|
"Type '" SHORT_PROGRAM_NAME " core --help' for more information.\n",
|
263
|
-
|
270
|
+
appRoot.c_str());
|
264
271
|
exit(1);
|
265
272
|
}
|
266
273
|
|
267
|
-
|
268
|
-
|
274
|
+
appType = getAppTypeName(appTypeEnum);
|
275
|
+
} else {
|
276
|
+
appType = coreConfig->get("single_app_mode_app_type").asString();
|
277
|
+
}
|
278
|
+
|
279
|
+
if (coreConfig->get("single_app_mode_startup_file").isNull()) {
|
280
|
+
startupFile = appRoot + "/" + getAppTypeStartupFile(getAppType(appType));
|
281
|
+
} else {
|
282
|
+
startupFile = coreConfig->get("single_app_mode_startup_file").asString();
|
269
283
|
}
|
284
|
+
if (!fileExists(startupFile)) {
|
285
|
+
fprintf(stderr, "ERROR: unable to find expected startup file %s."
|
286
|
+
" Please specify its correct path with --startup-file.\n",
|
287
|
+
startupFile.c_str());
|
288
|
+
exit(1);
|
289
|
+
}
|
290
|
+
|
291
|
+
wo->singleAppModeConfig["app_root"] = appRoot;
|
292
|
+
wo->singleAppModeConfig["app_type"] = appType;
|
293
|
+
wo->singleAppModeConfig["startup_file"] = startupFile;
|
270
294
|
|
271
295
|
P_NOTICE(SHORT_PROGRAM_NAME " core running in single-application mode.");
|
272
|
-
P_NOTICE("Serving app : " <<
|
273
|
-
P_NOTICE("App type : " <<
|
274
|
-
P_NOTICE("App startup file: " <<
|
296
|
+
P_NOTICE("Serving app : " << appRoot);
|
297
|
+
P_NOTICE("App type : " << appType);
|
298
|
+
P_NOTICE("App startup file: " << startupFile);
|
275
299
|
}
|
276
300
|
|
277
301
|
static void
|
278
302
|
setUlimits() {
|
279
303
|
TRACE_POINT();
|
280
|
-
|
281
|
-
|
282
|
-
if (options.has("core_file_descriptor_ulimit")) {
|
283
|
-
unsigned int number = options.getUint("core_file_descriptor_ulimit");
|
304
|
+
unsigned int number = coreConfig->get("file_descriptor_ulimit").asUInt();
|
305
|
+
if (number != 0) {
|
284
306
|
struct rlimit limit;
|
285
307
|
int ret;
|
286
308
|
|
@@ -388,8 +410,10 @@ static void
|
|
388
410
|
startListening() {
|
389
411
|
TRACE_POINT();
|
390
412
|
WorkingObjects *wo = workingObjects;
|
391
|
-
|
392
|
-
|
413
|
+
const Json::Value addresses = coreConfig->get("controller_addresses");
|
414
|
+
const Json::Value apiAddresses = coreConfig->get("api_server_addresses");
|
415
|
+
Json::Value::const_iterator it;
|
416
|
+
unsigned int i;
|
393
417
|
|
394
418
|
#ifdef USE_SELINUX
|
395
419
|
// Set SELinux context on the first socket that we create
|
@@ -397,32 +421,33 @@ startListening() {
|
|
397
421
|
setSelinuxSocketContext();
|
398
422
|
#endif
|
399
423
|
|
400
|
-
for (
|
401
|
-
wo->serverFds[i] = createServer(
|
424
|
+
for (it = addresses.begin(), i = 0; it != addresses.end(); it++, i++) {
|
425
|
+
wo->serverFds[i] = createServer(it->asString(),
|
426
|
+
coreConfig->get("controller_socket_backlog").asUInt(), true,
|
402
427
|
__FILE__, __LINE__);
|
403
428
|
#ifdef USE_SELINUX
|
404
429
|
resetSelinuxSocketContext();
|
405
|
-
if (i == 0 && getSocketAddressType(
|
430
|
+
if (i == 0 && getSocketAddressType(it->asString()) == SAT_UNIX) {
|
406
431
|
// setSelinuxSocketContext() sets the context of the
|
407
432
|
// socket file descriptor but not the file on the filesystem.
|
408
433
|
// So we relabel the socket file here.
|
409
|
-
selinuxRelabelFile(parseUnixSocketAddress(
|
434
|
+
selinuxRelabelFile(parseUnixSocketAddress(it->asString()),
|
410
435
|
"passenger_instance_httpd_socket_t");
|
411
436
|
}
|
412
437
|
#endif
|
413
438
|
P_LOG_FILE_DESCRIPTOR_PURPOSE(wo->serverFds[i],
|
414
|
-
"Server address: " <<
|
415
|
-
if (getSocketAddressType(
|
416
|
-
makeFileWorldReadableAndWritable(parseUnixSocketAddress(
|
439
|
+
"Server address: " << it->asString());
|
440
|
+
if (getSocketAddressType(it->asString()) == SAT_UNIX) {
|
441
|
+
makeFileWorldReadableAndWritable(parseUnixSocketAddress(it->asString()));
|
417
442
|
}
|
418
443
|
}
|
419
|
-
for (
|
420
|
-
wo->apiServerFds[i] = createServer(
|
444
|
+
for (it = apiAddresses.begin(), i = 0; it != apiAddresses.end(); it++, i++) {
|
445
|
+
wo->apiServerFds[i] = createServer(it->asString(), 0, true,
|
421
446
|
__FILE__, __LINE__);
|
422
447
|
P_LOG_FILE_DESCRIPTOR_PURPOSE(wo->apiServerFds[i],
|
423
|
-
"ApiServer address: " <<
|
424
|
-
if (getSocketAddressType(
|
425
|
-
makeFileWorldReadableAndWritable(parseUnixSocketAddress(
|
448
|
+
"ApiServer address: " << it->asString());
|
449
|
+
if (getSocketAddressType(it->asString()) == SAT_UNIX) {
|
450
|
+
makeFileWorldReadableAndWritable(parseUnixSocketAddress(it->asString()));
|
426
451
|
}
|
427
452
|
}
|
428
453
|
}
|
@@ -430,16 +455,18 @@ startListening() {
|
|
430
455
|
static void
|
431
456
|
createPidFile() {
|
432
457
|
TRACE_POINT();
|
433
|
-
|
434
|
-
if (!pidFile.
|
458
|
+
Json::Value pidFile = coreConfig->get("pid_file");
|
459
|
+
if (!pidFile.isNull()) {
|
435
460
|
char pidStr[32];
|
436
461
|
|
437
462
|
snprintf(pidStr, sizeof(pidStr), "%lld", (long long) getpid());
|
438
463
|
|
439
|
-
int fd = syscalls::open(pidFile.
|
464
|
+
int fd = syscalls::open(pidFile.asCString(),
|
465
|
+
O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
440
466
|
if (fd == -1) {
|
441
467
|
int e = errno;
|
442
|
-
throw FileSystemException("Cannot create PID file "
|
468
|
+
throw FileSystemException("Cannot create PID file "
|
469
|
+
+ pidFile.asString(), e, pidFile.asString());
|
443
470
|
}
|
444
471
|
|
445
472
|
UPDATE_TRACE_POINT();
|
@@ -599,6 +626,7 @@ spawningKitErrorHandler(const SpawningKit::ConfigPtr &config, SpawnException &e,
|
|
599
626
|
ApplicationPool2::processAndLogNewSpawnException(e, options, config);
|
600
627
|
}
|
601
628
|
|
629
|
+
|
602
630
|
static void
|
603
631
|
initializeCurl() {
|
604
632
|
TRACE_POINT();
|
@@ -612,22 +640,14 @@ initializeCurl() {
|
|
612
640
|
static void
|
613
641
|
initializeNonPrivilegedWorkingObjects() {
|
614
642
|
TRACE_POINT();
|
615
|
-
VariantMap &options = *agentsOptions;
|
616
643
|
WorkingObjects *wo = workingObjects;
|
617
644
|
|
618
|
-
|
619
|
-
|
620
|
-
{
|
621
|
-
options.set("server_software", options.get("server_software") +
|
622
|
-
(" " SERVER_TOKEN_NAME "/" PASSENGER_VERSION));
|
623
|
-
}
|
624
|
-
setenv("SERVER_SOFTWARE", options.get("server_software").c_str(), 1);
|
625
|
-
options.set("data_buffer_dir", absolutizePath(options.get("data_buffer_dir")));
|
645
|
+
const Json::Value addresses = coreConfig->get("controller_addresses");
|
646
|
+
const Json::Value apiAddresses = coreConfig->get("api_server_addresses");
|
626
647
|
|
627
|
-
|
628
|
-
vector<string> apiAddresses = options.getStrSet("core_api_addresses", false);
|
648
|
+
setenv("SERVER_SOFTWARE", coreConfig->get("server_software").asCString(), 1);
|
629
649
|
|
630
|
-
wo->resourceLocator = ResourceLocator(
|
650
|
+
wo->resourceLocator = ResourceLocator(coreConfig->get("passenger_root").asString());
|
631
651
|
|
632
652
|
wo->randomGenerator = boost::make_shared<RandomGenerator>();
|
633
653
|
// Check whether /dev/urandom is actually random.
|
@@ -638,21 +658,21 @@ initializeNonPrivilegedWorkingObjects() {
|
|
638
658
|
}
|
639
659
|
|
640
660
|
UPDATE_TRACE_POINT();
|
641
|
-
if (
|
661
|
+
if (!coreConfig->get("ust_router_address").isNull()) {
|
642
662
|
wo->unionStationContext = boost::make_shared<UnionStation::Context>(
|
643
|
-
|
663
|
+
coreConfig->get("ust_router_address").asString(),
|
644
664
|
"logging",
|
645
|
-
|
665
|
+
coreConfig->get("ust_router_password").asString());
|
646
666
|
}
|
647
667
|
|
648
668
|
UPDATE_TRACE_POINT();
|
649
669
|
wo->spawningKitConfig = boost::make_shared<SpawningKit::Config>();
|
650
670
|
wo->spawningKitConfig->resourceLocator = &wo->resourceLocator;
|
651
|
-
wo->spawningKitConfig->
|
671
|
+
wo->spawningKitConfig->agentConfig = coreConfig->inspectEffectiveValues();
|
652
672
|
wo->spawningKitConfig->errorHandler = spawningKitErrorHandler;
|
653
673
|
wo->spawningKitConfig->unionStationContext = wo->unionStationContext;
|
654
674
|
wo->spawningKitConfig->randomGenerator = wo->randomGenerator;
|
655
|
-
wo->spawningKitConfig->instanceDir =
|
675
|
+
wo->spawningKitConfig->instanceDir = coreConfig->get("instance_dir").asString();
|
656
676
|
if (!wo->spawningKitConfig->instanceDir.empty()) {
|
657
677
|
wo->spawningKitConfig->instanceDir = absolutizePath(
|
658
678
|
wo->spawningKitConfig->instanceDir);
|
@@ -661,26 +681,26 @@ initializeNonPrivilegedWorkingObjects() {
|
|
661
681
|
|
662
682
|
UPDATE_TRACE_POINT();
|
663
683
|
wo->spawningKitFactory = boost::make_shared<SpawningKit::Factory>(wo->spawningKitConfig);
|
664
|
-
wo->appPool = boost::make_shared<Pool>(wo->spawningKitFactory,
|
684
|
+
wo->appPool = boost::make_shared<Pool>(wo->spawningKitFactory, coreConfig->inspectEffectiveValues());
|
665
685
|
wo->appPool->initialize();
|
666
|
-
wo->appPool->setMax(
|
667
|
-
wo->appPool->setMaxIdleTime(
|
668
|
-
wo->appPool->enableSelfChecking(
|
686
|
+
wo->appPool->setMax(coreConfig->get("max_pool_size").asInt());
|
687
|
+
wo->appPool->setMaxIdleTime(coreConfig->get("pool_idle_time").asInt() * 1000000ULL);
|
688
|
+
wo->appPool->enableSelfChecking(coreConfig->get("pool_selfchecks").asBool());
|
669
689
|
wo->appPool->abortLongRunningConnectionsCallback = abortLongRunningConnections;
|
670
690
|
|
671
691
|
UPDATE_TRACE_POINT();
|
672
|
-
unsigned int nthreads =
|
692
|
+
unsigned int nthreads = coreConfig->get("controller_threads").asUInt();
|
673
693
|
BackgroundEventLoop *firstLoop = NULL; // Avoid compiler warning
|
674
694
|
wo->threadWorkingObjects.reserve(nthreads);
|
675
695
|
for (unsigned int i = 0; i < nthreads; i++) {
|
676
696
|
UPDATE_TRACE_POINT();
|
677
697
|
ThreadWorkingObjects two;
|
678
698
|
|
679
|
-
Json::Value
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
699
|
+
Json::Value contextConfig = coreConfig->inspectEffectiveValues();
|
700
|
+
contextConfig["secure_mode_password"] = wo->controllerSecureHeadersPassword;
|
701
|
+
|
702
|
+
Json::Value controllerConfig = coreConfig->inspectEffectiveValues();
|
703
|
+
controllerConfig["thread_number"] = i + 1;
|
684
704
|
|
685
705
|
if (i == 0) {
|
686
706
|
two.bgloop = firstLoop = new BackgroundEventLoop(true, true);
|
@@ -689,17 +709,22 @@ initializeNonPrivilegedWorkingObjects() {
|
|
689
709
|
}
|
690
710
|
|
691
711
|
UPDATE_TRACE_POINT();
|
692
|
-
two.serverKitContext = new ServerKit::Context(
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
two.serverKitContext->
|
698
|
-
|
712
|
+
two.serverKitContext = new ServerKit::Context(
|
713
|
+
coreSchema->controllerServerKit.schema,
|
714
|
+
contextConfig,
|
715
|
+
coreSchema->controllerServerKit.translator);
|
716
|
+
two.serverKitContext->libev = two.bgloop->safe;
|
717
|
+
two.serverKitContext->libuv = two.bgloop->libuv_loop;
|
718
|
+
two.serverKitContext->initialize();
|
699
719
|
|
700
720
|
UPDATE_TRACE_POINT();
|
701
721
|
two.controller = new Core::Controller(two.serverKitContext,
|
702
|
-
|
722
|
+
coreSchema->controller.schema,
|
723
|
+
controllerConfig,
|
724
|
+
coreSchema->controller.translator,
|
725
|
+
&coreSchema->controllerSingleAppMode.schema,
|
726
|
+
&wo->singleAppModeConfig,
|
727
|
+
coreSchema->controllerSingleAppMode.translator);
|
703
728
|
two.controller->resourceLocator = &wo->resourceLocator;
|
704
729
|
two.controller->appPool = wo->appPool;
|
705
730
|
two.controller->unionStationContext = wo->unionStationContext;
|
@@ -723,27 +748,27 @@ initializeNonPrivilegedWorkingObjects() {
|
|
723
748
|
UPDATE_TRACE_POINT();
|
724
749
|
ApiWorkingObjects *awo = &wo->apiWorkingObjects;
|
725
750
|
|
751
|
+
Json::Value contextConfig = coreConfig->inspectEffectiveValues();
|
752
|
+
|
726
753
|
awo->bgloop = new BackgroundEventLoop(true, true);
|
727
|
-
awo->serverKitContext = new ServerKit::Context(
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
awo->serverKitContext->
|
733
|
-
|
754
|
+
awo->serverKitContext = new ServerKit::Context(
|
755
|
+
coreSchema->apiServerKit.schema,
|
756
|
+
contextConfig,
|
757
|
+
coreSchema->apiServerKit.translator);
|
758
|
+
awo->serverKitContext->libev = awo->bgloop->safe;
|
759
|
+
awo->serverKitContext->libuv = awo->bgloop->libuv_loop;
|
760
|
+
awo->serverKitContext->initialize();
|
734
761
|
|
735
762
|
UPDATE_TRACE_POINT();
|
736
763
|
awo->apiServer = new Core::ApiServer::ApiServer(awo->serverKitContext,
|
737
|
-
|
764
|
+
coreSchema->apiServer.schema, coreConfig->inspectEffectiveValues(),
|
765
|
+
coreSchema->apiServer.translator);
|
738
766
|
awo->apiServer->controllers.reserve(wo->threadWorkingObjects.size());
|
739
767
|
for (unsigned int i = 0; i < wo->threadWorkingObjects.size(); i++) {
|
740
768
|
awo->apiServer->controllers.push_back(
|
741
769
|
wo->threadWorkingObjects[i].controller);
|
742
770
|
}
|
743
|
-
awo->apiServer->apiAccountDatabase = &wo->apiAccountDatabase;
|
744
771
|
awo->apiServer->appPool = wo->appPool;
|
745
|
-
awo->apiServer->instanceDir = options.get("instance_dir", false);
|
746
|
-
awo->apiServer->fdPassingPassword = options.get("watchdog_fd_passing_password", false);
|
747
772
|
awo->apiServer->exitEvent = &wo->exitEvent;
|
748
773
|
awo->apiServer->shutdownFinishCallback = apiServerShutdownFinished;
|
749
774
|
awo->apiServer->initialize();
|
@@ -786,38 +811,83 @@ initializeNonPrivilegedWorkingObjects() {
|
|
786
811
|
static void
|
787
812
|
initializeSecurityUpdateChecker() {
|
788
813
|
TRACE_POINT();
|
814
|
+
Json::Value config = coreConfig->inspectEffectiveValues();
|
815
|
+
|
816
|
+
// nginx / apache / standalone
|
817
|
+
string serverIdentifier = coreConfig->get("integration_mode").asString();
|
818
|
+
// nginx / builtin
|
819
|
+
if (!coreConfig->get("standalone_engine").isNull()) {
|
820
|
+
serverIdentifier.append(" ");
|
821
|
+
serverIdentifier.append(coreConfig->get("standalone_engine").asString());
|
822
|
+
}
|
823
|
+
if (coreConfig->get("server_software").asString().find(FLYING_PASSENGER_NAME) != string::npos) {
|
824
|
+
serverIdentifier.append(" flying");
|
825
|
+
}
|
826
|
+
config["server_identifier"] = serverIdentifier;
|
827
|
+
|
828
|
+
SecurityUpdateChecker *checker = new SecurityUpdateChecker(
|
829
|
+
coreSchema->securityUpdateChecker.schema,
|
830
|
+
config,
|
831
|
+
coreSchema->securityUpdateChecker.translator);
|
832
|
+
workingObjects->securityUpdateChecker = checker;
|
833
|
+
checker->resourceLocator = &workingObjects->resourceLocator;
|
834
|
+
checker->initialize();
|
835
|
+
checker->start();
|
836
|
+
}
|
789
837
|
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
838
|
+
static void
|
839
|
+
runAdminPanelConnector(AdminPanelConnector *connector) {
|
840
|
+
connector->run();
|
841
|
+
P_DEBUG("Admin panel connector shutdown finished");
|
842
|
+
serverShutdownFinished();
|
843
|
+
}
|
795
844
|
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
}
|
801
|
-
if (options.get("server_software").find(FLYING_PASSENGER_NAME) != string::npos) {
|
802
|
-
serverIntegration.append(" flying");
|
803
|
-
}
|
804
|
-
string serverVersion = options.get("server_version", false); // not set in case of standalone / builtin
|
845
|
+
static void
|
846
|
+
initializeAdminPanelConnector() {
|
847
|
+
TRACE_POINT();
|
848
|
+
WorkingObjects &wo = *workingObjects;
|
805
849
|
|
806
|
-
|
807
|
-
|
850
|
+
if (coreConfig->get("admin_panel_url").isNull()) {
|
851
|
+
return;
|
808
852
|
}
|
853
|
+
|
854
|
+
Json::Value config = coreConfig->inspectEffectiveValues();
|
855
|
+
config["log_prefix"] = "AdminPanelConnector: ";
|
856
|
+
config["ruby"] = config["default_ruby"];
|
857
|
+
|
858
|
+
P_NOTICE("Initialize connection with " << PROGRAM_NAME " admin panel at "
|
859
|
+
<< config["admin_panel_url"].asString());
|
860
|
+
AdminPanelConnector *connector = new Core::AdminPanelConnector(
|
861
|
+
coreSchema->adminPanelConnector.schema, config,
|
862
|
+
coreSchema->adminPanelConnector.translator);
|
863
|
+
connector->resourceLocator = &wo.resourceLocator;
|
864
|
+
connector->appPool = wo.appPool;
|
865
|
+
connector->configGetter = inspectConfig;
|
866
|
+
connector->initialize();
|
867
|
+
wo.shutdownCounter.fetch_add(1, boost::memory_order_relaxed);
|
868
|
+
wo.adminPanelConnector = connector;
|
869
|
+
wo.adminPanelConnectorThread = new oxt::thread(
|
870
|
+
boost::bind(runAdminPanelConnector, connector),
|
871
|
+
"Admin panel connector main loop", 128 * 1024);
|
809
872
|
}
|
810
873
|
|
811
874
|
static void
|
812
875
|
prestartWebApps() {
|
813
876
|
TRACE_POINT();
|
814
|
-
VariantMap &options = *agentsOptions;
|
815
877
|
WorkingObjects *wo = workingObjects;
|
878
|
+
vector<string> prestartURLs;
|
879
|
+
const Json::Value jPrestartURLs = coreConfig->get("prestart_urls");
|
880
|
+
Json::Value::const_iterator it, end = jPrestartURLs.end();
|
881
|
+
|
882
|
+
prestartURLs.reserve(jPrestartURLs.size());
|
883
|
+
for (it = jPrestartURLs.begin(); it != end; it++) {
|
884
|
+
prestartURLs.push_back(it->asString());
|
885
|
+
}
|
816
886
|
|
817
887
|
boost::function<void ()> func = boost::bind(prestartWebApps,
|
818
888
|
wo->resourceLocator,
|
819
|
-
|
820
|
-
|
889
|
+
coreConfig->get("default_ruby").asString(),
|
890
|
+
prestartURLs
|
821
891
|
);
|
822
892
|
wo->prestarterThread = new oxt::thread(
|
823
893
|
boost::bind(runAndPrintExceptions, func, true)
|
@@ -877,14 +947,15 @@ warnIfPathVulnerable(const char *path, string &warnings) {
|
|
877
947
|
* changed owner or access rights.
|
878
948
|
*/
|
879
949
|
static void
|
880
|
-
warnIfPassengerRootVulnerable(
|
950
|
+
warnIfPassengerRootVulnerable() {
|
881
951
|
TRACE_POINT();
|
882
952
|
|
883
953
|
if (geteuid() != 0) {
|
884
954
|
return; // Passenger is not root, so no escalation.
|
885
955
|
}
|
886
956
|
|
887
|
-
string
|
957
|
+
string root = workingObjects->resourceLocator.getInstallSpec();
|
958
|
+
string checkPath = absolutizePath(root);
|
888
959
|
// Check the Passenger root and all dirs above it for ownership and world-writeability
|
889
960
|
string warnings;
|
890
961
|
while (!checkPath.empty() && checkPath != "/") {
|
@@ -893,8 +964,9 @@ warnIfPassengerRootVulnerable(const string &passengerRoot) {
|
|
893
964
|
checkPath = extractDirName(checkPath);
|
894
965
|
}
|
895
966
|
if (!warnings.empty()) {
|
896
|
-
P_WARN("WARNING: potential privilege escalation vulnerability.
|
897
|
-
|
967
|
+
P_WARN("WARNING: potential privilege escalation vulnerability. "
|
968
|
+
PROGRAM_NAME " is running as root, and part(s) of the passenger root path ("
|
969
|
+
<< root << ") can be changed by non-root user(s):" << warnings);
|
898
970
|
}
|
899
971
|
}
|
900
972
|
|
@@ -907,13 +979,14 @@ reportInitializationInfo() {
|
|
907
979
|
"initialized",
|
908
980
|
NULL);
|
909
981
|
} else {
|
910
|
-
|
911
|
-
|
912
|
-
|
982
|
+
const Json::Value addresses = coreConfig->get("controller_addresses");
|
983
|
+
const Json::Value apiAddresses = coreConfig->get("api_server_addresses");
|
984
|
+
Json::Value::const_iterator it;
|
913
985
|
|
914
986
|
P_NOTICE(SHORT_PROGRAM_NAME " core online, PID " << getpid() <<
|
915
987
|
", listening on " << addresses.size() << " socket(s):");
|
916
|
-
|
988
|
+
for (it = addresses.begin(); it != addresses.end(); it++) {
|
989
|
+
string address = it->asString();
|
917
990
|
if (startsWith(address, "tcp://")) {
|
918
991
|
address.erase(0, sizeof("tcp://") - 1);
|
919
992
|
address.insert(0, "http://");
|
@@ -924,7 +997,8 @@ reportInitializationInfo() {
|
|
924
997
|
|
925
998
|
if (!apiAddresses.empty()) {
|
926
999
|
P_NOTICE("API server listening on " << apiAddresses.size() << " socket(s):");
|
927
|
-
|
1000
|
+
for (it = apiAddresses.begin(); it != apiAddresses.end(); it++) {
|
1001
|
+
string address = it->asString();
|
928
1002
|
if (startsWith(address, "tcp://")) {
|
929
1003
|
address.erase(0, sizeof("tcp://") - 1);
|
930
1004
|
address.insert(0, "http://");
|
@@ -942,7 +1016,7 @@ mainLoop() {
|
|
942
1016
|
WorkingObjects *wo = workingObjects;
|
943
1017
|
#ifdef SUPPORTS_PER_THREAD_CPU_AFFINITY
|
944
1018
|
unsigned int maxCpus = boost::thread::hardware_concurrency();
|
945
|
-
bool cpuAffine =
|
1019
|
+
bool cpuAffine = coreConfig->get("controller_cpu_affine").asBool()
|
946
1020
|
&& maxCpus <= CPU_SETSIZE;
|
947
1021
|
#endif
|
948
1022
|
|
@@ -1090,6 +1164,9 @@ waitForExitEvent() {
|
|
1090
1164
|
if (wo->apiWorkingObjects.apiServer != NULL) {
|
1091
1165
|
wo->apiWorkingObjects.bgloop->safe->runLater(shutdownApiServer);
|
1092
1166
|
}
|
1167
|
+
if (wo->adminPanelConnector != NULL) {
|
1168
|
+
wo->adminPanelConnector->asyncShutdown();
|
1169
|
+
}
|
1093
1170
|
|
1094
1171
|
UPDATE_TRACE_POINT();
|
1095
1172
|
FD_ZERO(&fds);
|
@@ -1153,9 +1230,9 @@ cleanup() {
|
|
1153
1230
|
static void
|
1154
1231
|
deletePidFile() {
|
1155
1232
|
TRACE_POINT();
|
1156
|
-
|
1157
|
-
if (!pidFile.
|
1158
|
-
syscalls::unlink(pidFile.
|
1233
|
+
Json::Value pidFile = coreConfig->get("pid_file");
|
1234
|
+
if (!pidFile.isNull()) {
|
1235
|
+
syscalls::unlink(pidFile.asCString());
|
1159
1236
|
}
|
1160
1237
|
}
|
1161
1238
|
|
@@ -1175,10 +1252,11 @@ runCore() {
|
|
1175
1252
|
initializeCurl();
|
1176
1253
|
initializeNonPrivilegedWorkingObjects();
|
1177
1254
|
initializeSecurityUpdateChecker();
|
1255
|
+
initializeAdminPanelConnector();
|
1178
1256
|
prestartWebApps();
|
1179
1257
|
|
1180
1258
|
UPDATE_TRACE_POINT();
|
1181
|
-
warnIfPassengerRootVulnerable(
|
1259
|
+
warnIfPassengerRootVulnerable();
|
1182
1260
|
reportInitializationInfo();
|
1183
1261
|
mainLoop();
|
1184
1262
|
|
@@ -1203,12 +1281,13 @@ runCore() {
|
|
1203
1281
|
/***** Entry point and command line argument parsing *****/
|
1204
1282
|
|
1205
1283
|
static void
|
1206
|
-
parseOptions(int argc, const char *argv[],
|
1284
|
+
parseOptions(int argc, const char *argv[], ConfigKit::Store &config) {
|
1207
1285
|
OptionParser p(coreUsage);
|
1286
|
+
Json::Value updates(Json::objectValue);
|
1208
1287
|
int i = 2;
|
1209
1288
|
|
1210
1289
|
while (i < argc) {
|
1211
|
-
if (parseCoreOption(argc, argv, i,
|
1290
|
+
if (parseCoreOption(argc, argv, i, updates)) {
|
1212
1291
|
continue;
|
1213
1292
|
} else if (p.isFlag(argv[i], 'h', "--help")) {
|
1214
1293
|
coreUsage();
|
@@ -1219,222 +1298,30 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
|
|
1219
1298
|
exit(1);
|
1220
1299
|
}
|
1221
1300
|
}
|
1222
|
-
}
|
1223
|
-
|
1224
|
-
static void
|
1225
|
-
preinitialize(VariantMap &options) {
|
1226
|
-
// Set log_level here so that initializeAgent() calls setLogLevel()
|
1227
|
-
// and setLogFile() with the right value.
|
1228
|
-
if (options.has("core_log_level")) {
|
1229
|
-
options.setInt("log_level", options.getInt("core_log_level"));
|
1230
|
-
}
|
1231
|
-
if (options.has("core_log_file")) {
|
1232
|
-
options.set("log_file", options.get("core_log_file"));
|
1233
|
-
}
|
1234
|
-
if (options.has("core_file_descriptor_log_file")) {
|
1235
|
-
options.set("file_descriptor_log_file", options.get("core_file_descriptor_log_file"));
|
1236
|
-
}
|
1237
|
-
}
|
1238
|
-
|
1239
|
-
static string
|
1240
|
-
inferDefaultGroup(const string &defaultUser) {
|
1241
|
-
struct passwd *userEntry = getpwnam(defaultUser.c_str());
|
1242
|
-
if (userEntry == NULL) {
|
1243
|
-
throw ConfigurationException(
|
1244
|
-
string("The user that PassengerDefaultUser refers to, '") +
|
1245
|
-
defaultUser + "', does not exist.");
|
1246
|
-
}
|
1247
|
-
return getGroupName(userEntry->pw_gid);
|
1248
|
-
}
|
1249
|
-
|
1250
|
-
static void
|
1251
|
-
setAgentsOptionsDefaults() {
|
1252
|
-
VariantMap &options = *agentsOptions;
|
1253
|
-
set<string> defaultAddress;
|
1254
|
-
defaultAddress.insert(DEFAULT_HTTP_SERVER_LISTEN_ADDRESS);
|
1255
|
-
|
1256
|
-
options.setDefaultBool("user_switching", true);
|
1257
|
-
options.setDefault("default_user", DEFAULT_WEB_APP_USER);
|
1258
|
-
if (!options.has("default_group")) {
|
1259
|
-
options.set("default_group",
|
1260
|
-
inferDefaultGroup(options.get("default_user")));
|
1261
|
-
}
|
1262
|
-
options.setDefault("integration_mode", "standalone");
|
1263
|
-
if (options.get("integration_mode") == "standalone" && !options.has("standalone_engine")) {
|
1264
|
-
options.set("standalone_engine", "builtin");
|
1265
|
-
}
|
1266
|
-
options.setDefaultStrSet("core_addresses", defaultAddress);
|
1267
|
-
options.setDefaultInt("socket_backlog", DEFAULT_SOCKET_BACKLOG);
|
1268
|
-
options.setDefaultBool("multi_app", false);
|
1269
|
-
options.setDefault("environment", DEFAULT_APP_ENV);
|
1270
|
-
options.setDefault("spawn_method", DEFAULT_SPAWN_METHOD);
|
1271
|
-
options.setDefaultBool("load_shell_envvars", false);
|
1272
|
-
options.setDefaultBool("abort_websockets_on_process_shutdown", true);
|
1273
|
-
options.setDefaultInt("force_max_concurrent_requests_per_process", -1);
|
1274
|
-
options.setDefault("concurrency_model", DEFAULT_CONCURRENCY_MODEL);
|
1275
|
-
options.setDefaultInt("app_thread_count", DEFAULT_APP_THREAD_COUNT);
|
1276
|
-
options.setDefaultInt("max_pool_size", DEFAULT_MAX_POOL_SIZE);
|
1277
|
-
options.setDefaultInt("pool_idle_time", DEFAULT_POOL_IDLE_TIME);
|
1278
|
-
options.setDefaultInt("min_instances", 1);
|
1279
|
-
options.setDefaultInt("max_preloader_idle_time", DEFAULT_MAX_PRELOADER_IDLE_TIME);
|
1280
|
-
options.setDefaultUint("max_request_queue_size", DEFAULT_MAX_REQUEST_QUEUE_SIZE);
|
1281
|
-
options.setDefaultUint("stat_throttle_rate", DEFAULT_STAT_THROTTLE_RATE);
|
1282
|
-
options.setDefault("server_software", SERVER_TOKEN_NAME "/" PASSENGER_VERSION);
|
1283
|
-
options.setDefaultBool("show_version_in_header", true);
|
1284
|
-
options.setDefaultBool("sticky_sessions", false);
|
1285
|
-
options.setDefault("sticky_sessions_cookie_name", DEFAULT_STICKY_SESSIONS_COOKIE_NAME);
|
1286
|
-
options.setDefaultBool("turbocaching", true);
|
1287
|
-
options.setDefault("data_buffer_dir", getSystemTempDir());
|
1288
|
-
options.setDefaultUint("file_buffer_threshold", DEFAULT_FILE_BUFFERED_CHANNEL_THRESHOLD);
|
1289
|
-
options.setDefaultInt("response_buffer_high_watermark", DEFAULT_RESPONSE_BUFFER_HIGH_WATERMARK);
|
1290
|
-
options.setDefaultBool("selfchecks", false);
|
1291
|
-
options.setDefaultBool("core_graceful_exit", true);
|
1292
|
-
options.setDefaultInt("core_threads", boost::thread::hardware_concurrency());
|
1293
|
-
options.setDefaultBool("core_cpu_affine", false);
|
1294
|
-
options.setDefault("friendly_error_pages", "auto");
|
1295
|
-
options.setDefaultBool("rolling_restarts", false);
|
1296
|
-
options.setDefaultBool("resist_deployment_errors", false);
|
1297
|
-
|
1298
|
-
string firstAddress = options.getStrSet("core_addresses")[0];
|
1299
|
-
if (getSocketAddressType(firstAddress) == SAT_TCP) {
|
1300
|
-
string host;
|
1301
|
-
unsigned short port;
|
1302
|
-
|
1303
|
-
parseTcpSocketAddress(firstAddress, host, port);
|
1304
|
-
options.setDefault("default_server_name", host);
|
1305
|
-
options.setDefaultInt("default_server_port", port);
|
1306
|
-
} else {
|
1307
|
-
options.setDefault("default_server_name", "localhost");
|
1308
|
-
options.setDefaultInt("default_server_port", 80);
|
1309
|
-
}
|
1310
|
-
|
1311
|
-
options.setDefault("default_ruby", DEFAULT_RUBY);
|
1312
|
-
options.setDefaultBool("debugger", false);
|
1313
|
-
if (!options.getBool("multi_app") && !options.has("app_root")) {
|
1314
|
-
char *pwd = getcwd(NULL, 0);
|
1315
|
-
options.set("app_root", pwd);
|
1316
|
-
free(pwd);
|
1317
|
-
}
|
1318
|
-
}
|
1319
|
-
|
1320
|
-
static void
|
1321
|
-
sanityCheckOptions() {
|
1322
|
-
VariantMap &options = *agentsOptions;
|
1323
|
-
bool ok = true;
|
1324
|
-
|
1325
|
-
if (!options.has("passenger_root")) {
|
1326
|
-
fprintf(stderr, "ERROR: please set the --passenger-root argument.\n");
|
1327
|
-
ok = false;
|
1328
|
-
}
|
1329
|
-
if (options.getBool("multi_app") && options.has("app_root")) {
|
1330
|
-
fprintf(stderr, "ERROR: you may not specify an application directory "
|
1331
|
-
"when in multi-app mode.\n");
|
1332
|
-
ok = false;
|
1333
|
-
}
|
1334
|
-
if (!options.getBool("multi_app") && options.has("app_type")) {
|
1335
|
-
PassengerAppType appType = getAppType(options.get("app_type"));
|
1336
|
-
if (appType == PAT_NONE || appType == PAT_ERROR) {
|
1337
|
-
fprintf(stderr, "ERROR: '%s' is not a valid application type. Supported app types are:",
|
1338
|
-
options.get("app_type").c_str());
|
1339
|
-
const AppTypeDefinition *definition = &appTypeDefinitions[0];
|
1340
|
-
while (definition->type != PAT_NONE) {
|
1341
|
-
fprintf(stderr, " %s", definition->name);
|
1342
|
-
definition++;
|
1343
|
-
}
|
1344
|
-
fprintf(stderr, "\n");
|
1345
|
-
ok = false;
|
1346
|
-
}
|
1347
1301
|
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1302
|
+
if (!updates.empty()) {
|
1303
|
+
vector<ConfigKit::Error> errors;
|
1304
|
+
if (!config.update(updates, errors)) {
|
1305
|
+
P_BUG("Unable to set initial configuration: " <<
|
1306
|
+
ConfigKit::toString(errors) << "\n"
|
1307
|
+
"Raw initial configuration: " << updates.toStyledString());
|
1351
1308
|
}
|
1352
1309
|
}
|
1353
|
-
if (options.get("concurrency_model") != "process" && options.get("concurrency_model") != "thread") {
|
1354
|
-
fprintf(stderr, "ERROR: '%s' is not a valid concurrency model. Supported concurrency "
|
1355
|
-
"models are: process, thread.\n",
|
1356
|
-
options.get("concurrency_model").c_str());
|
1357
|
-
ok = false;
|
1358
|
-
} else if (options.get("concurrency_model") != "process") {
|
1359
|
-
#ifndef PASSENGER_IS_ENTERPRISE
|
1360
|
-
fprintf(stderr, "ERROR: the '%s' concurrency model is only supported in "
|
1361
|
-
PROGRAM_NAME " Enterprise.\nYou are currently using the open source "
|
1362
|
-
PROGRAM_NAME ". Buy " PROGRAM_NAME " Enterprise here: https://www.phusionpassenger.com/enterprise\n",
|
1363
|
-
options.get("concurrency_model").c_str());
|
1364
|
-
ok = false;
|
1365
|
-
#endif
|
1366
|
-
}
|
1367
|
-
if (options.getInt("app_thread_count") < 1) {
|
1368
|
-
fprintf(stderr, "ERROR: the value passed to --app-thread-count must be at least 1.\n");
|
1369
|
-
ok = false;
|
1370
|
-
} else if (options.getInt("app_thread_count") > 1) {
|
1371
|
-
#ifndef PASSENGER_IS_ENTERPRISE
|
1372
|
-
fprintf(stderr, "ERROR: the --app-thread-count option is only supported in "
|
1373
|
-
PROGRAM_NAME " Enterprise.\nYou are currently using the open source "
|
1374
|
-
PROGRAM_NAME ". Buy " PROGRAM_NAME " Enterprise here: https://www.phusionpassenger.com/enterprise\n");
|
1375
|
-
ok = false;
|
1376
|
-
#endif
|
1377
|
-
}
|
1378
|
-
if (options.has("memory_limit")) {
|
1379
|
-
#ifndef PASSENGER_IS_ENTERPRISE
|
1380
|
-
fprintf(stderr, "ERROR: the --memory-limit option is only supported in "
|
1381
|
-
PROGRAM_NAME " Enterprise.\nYou are currently using the open source "
|
1382
|
-
PROGRAM_NAME ". Buy " PROGRAM_NAME " Enterprise here: https://www.phusionpassenger.com/enterprise\n");
|
1383
|
-
ok = false;
|
1384
|
-
#endif
|
1385
|
-
}
|
1386
|
-
if (options.has("max_requests")) {
|
1387
|
-
if (options.getInt("max_requests", false, 0) < 0) {
|
1388
|
-
fprintf(stderr, "ERROR: the value passed to --max-requests must be at least 0.\n");
|
1389
|
-
ok = false;
|
1390
|
-
}
|
1391
|
-
}
|
1392
|
-
if (options.has("max_request_time")) {
|
1393
|
-
if (options.getInt("max_request_time", false, 0) < 1) {
|
1394
|
-
fprintf(stderr, "ERROR: the value passed to --max-request-time must be at least 1.\n");
|
1395
|
-
ok = false;
|
1396
|
-
}
|
1397
|
-
#ifndef PASSENGER_IS_ENTERPRISE
|
1398
|
-
fprintf(stderr, "ERROR: the --max-request-time option is only supported in "
|
1399
|
-
PROGRAM_NAME " Enterprise.\nYou are currently using the open source "
|
1400
|
-
PROGRAM_NAME ". Buy " PROGRAM_NAME " Enterprise here: https://www.phusionpassenger.com/enterprise\n");
|
1401
|
-
ok = false;
|
1402
|
-
#endif
|
1403
|
-
}
|
1404
|
-
if (Core::parseControllerBenchmarkMode(options.get("benchmark_mode", false))
|
1405
|
-
== Core::BM_UNKNOWN)
|
1406
|
-
{
|
1407
|
-
fprintf(stderr, "ERROR: '%s' is not a valid mode for --benchmark.\n",
|
1408
|
-
options.get("benchmark_mode", false).c_str());
|
1409
|
-
ok = false;
|
1410
|
-
}
|
1411
|
-
if (options.getInt("core_threads") < 1) {
|
1412
|
-
fprintf(stderr, "ERROR: you may only specify for --threads a number greater than or equal to 1.\n");
|
1413
|
-
ok = false;
|
1414
|
-
}
|
1415
|
-
if (options.getInt("max_pool_size") < 1) {
|
1416
|
-
fprintf(stderr, "ERROR: you may only specify for --max-pool-size a number greater than or equal to 1.\n");
|
1417
|
-
ok = false;
|
1418
|
-
}
|
1419
|
-
|
1420
|
-
if (!ok) {
|
1421
|
-
exit(1);
|
1422
|
-
}
|
1423
1310
|
}
|
1424
1311
|
|
1425
1312
|
int
|
1426
1313
|
coreMain(int argc, char *argv[]) {
|
1427
1314
|
int ret;
|
1428
1315
|
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1316
|
+
coreSchema = new Schema();
|
1317
|
+
coreConfig = new ConfigKit::Store(*coreSchema);
|
1318
|
+
initializeAgent(argc, &argv, SHORT_PROGRAM_NAME " core",
|
1319
|
+
*coreConfig, coreSchema->loggingKit.translator,
|
1320
|
+
parseOptions, NULL, 2);
|
1434
1321
|
|
1435
|
-
restoreOomScore(
|
1322
|
+
restoreOomScore(coreConfig->get("oom_score").asString());
|
1436
1323
|
|
1437
1324
|
ret = runCore();
|
1438
|
-
shutdownAgent(
|
1325
|
+
shutdownAgent(coreSchema, coreConfig);
|
1439
1326
|
return ret;
|
1440
1327
|
}
|