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
@@ -0,0 +1,340 @@
|
|
1
|
+
/*
|
2
|
+
* Phusion Passenger - https://www.phusionpassenger.com/
|
3
|
+
* Copyright (c) 2011-2017 Phusion Holding B.V.
|
4
|
+
*
|
5
|
+
* "Passenger", "Phusion Passenger" and "Union Station" are registered
|
6
|
+
* trademarks of Phusion Holding B.V.
|
7
|
+
*
|
8
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
9
|
+
* of this software and associated documentation files (the "Software"), to deal
|
10
|
+
* in the Software without restriction, including without limitation the rights
|
11
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
12
|
+
* copies of the Software, and to permit persons to whom the Software is
|
13
|
+
* furnished to do so, subject to the following conditions:
|
14
|
+
*
|
15
|
+
* The above copyright notice and this permission notice shall be included in
|
16
|
+
* all copies or substantial portions of the Software.
|
17
|
+
*
|
18
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
19
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
20
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
21
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
22
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
23
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
|
+
* THE SOFTWARE.
|
25
|
+
*/
|
26
|
+
|
27
|
+
#ifndef _PASSENGER_WATCHDOG_CONFIG_H_
|
28
|
+
#define _PASSENGER_WATCHDOG_CONFIG_H_
|
29
|
+
|
30
|
+
#include <ConfigKit/TableTranslator.h>
|
31
|
+
#include <ConfigKit/PrefixTranslator.h>
|
32
|
+
#include <Core/Config.h>
|
33
|
+
#include <Watchdog/ApiServer.h>
|
34
|
+
#include <Shared/ApiAccountUtils.h>
|
35
|
+
#include <Utils.h>
|
36
|
+
#include <Utils/StrIntUtils.h>
|
37
|
+
|
38
|
+
namespace Passenger {
|
39
|
+
namespace Watchdog {
|
40
|
+
|
41
|
+
using namespace std;
|
42
|
+
|
43
|
+
|
44
|
+
/*
|
45
|
+
* BEGIN ConfigKit schema: Passenger::Watchdog::Schema
|
46
|
+
* (do not edit: following text is automatically generated
|
47
|
+
* by 'rake configkit_schemas_inline_comments')
|
48
|
+
*
|
49
|
+
* admin_panel_authentication object - secret
|
50
|
+
* admin_panel_close_timeout float - default(10.0)
|
51
|
+
* admin_panel_connect_timeout float - default(30.0)
|
52
|
+
* admin_panel_data_debug boolean - default(false)
|
53
|
+
* admin_panel_ping_interval float - default(30.0)
|
54
|
+
* admin_panel_ping_timeout float - default(30.0)
|
55
|
+
* admin_panel_proxy_password string - secret
|
56
|
+
* admin_panel_proxy_timeout float - default(30.0)
|
57
|
+
* admin_panel_proxy_url string - -
|
58
|
+
* admin_panel_proxy_username string - -
|
59
|
+
* admin_panel_reconnect_timeout float - default(5.0)
|
60
|
+
* admin_panel_url string - read_only
|
61
|
+
* admin_panel_websocketpp_debug_access boolean - default(false)
|
62
|
+
* admin_panel_websocketpp_debug_error boolean - default(false)
|
63
|
+
* app_output_log_level string - default("notice")
|
64
|
+
* benchmark_mode string - -
|
65
|
+
* config_manifest object - read_only
|
66
|
+
* controller_accept_burst_count unsigned integer - default(32)
|
67
|
+
* controller_addresses array of strings - default,read_only
|
68
|
+
* controller_client_freelist_limit unsigned integer - default(0)
|
69
|
+
* controller_cpu_affine boolean - default(false),read_only
|
70
|
+
* controller_file_buffered_channel_auto_start_mover boolean - default(true)
|
71
|
+
* controller_file_buffered_channel_auto_truncate_file boolean - default(true)
|
72
|
+
* controller_file_buffered_channel_buffer_dir string - default
|
73
|
+
* controller_file_buffered_channel_delay_in_file_mode_switching unsigned integer - default(0)
|
74
|
+
* controller_file_buffered_channel_max_disk_chunk_read_size unsigned integer - default(0)
|
75
|
+
* controller_file_buffered_channel_threshold unsigned integer - default(131072)
|
76
|
+
* controller_mbuf_block_chunk_size unsigned integer - default(4096),read_only
|
77
|
+
* controller_min_spare_clients unsigned integer - default(0)
|
78
|
+
* controller_pid_file string - default,read_only
|
79
|
+
* controller_request_freelist_limit unsigned integer - default(1024)
|
80
|
+
* controller_secure_headers_password string - default,secret
|
81
|
+
* controller_socket_backlog unsigned integer - default(2048),read_only
|
82
|
+
* controller_start_reading_after_accept boolean - default(true)
|
83
|
+
* controller_threads unsigned integer - default,read_only
|
84
|
+
* core_api_server_accept_burst_count unsigned integer - default(32)
|
85
|
+
* core_api_server_addresses array of strings - default([]),read_only
|
86
|
+
* core_api_server_authorizations array - default("[FILTERED]"),secret
|
87
|
+
* core_api_server_client_freelist_limit unsigned integer - default(0)
|
88
|
+
* core_api_server_file_buffered_channel_auto_start_mover boolean - default(true)
|
89
|
+
* core_api_server_file_buffered_channel_auto_truncate_file boolean - default(true)
|
90
|
+
* core_api_server_file_buffered_channel_buffer_dir string - default
|
91
|
+
* core_api_server_file_buffered_channel_delay_in_file_mode_switching unsigned integer - default(0)
|
92
|
+
* core_api_server_file_buffered_channel_max_disk_chunk_read_size unsigned integer - default(0)
|
93
|
+
* core_api_server_file_buffered_channel_threshold unsigned integer - default(131072)
|
94
|
+
* core_api_server_mbuf_block_chunk_size unsigned integer - default(4096),read_only
|
95
|
+
* core_api_server_min_spare_clients unsigned integer - default(0)
|
96
|
+
* core_api_server_request_freelist_limit unsigned integer - default(1024)
|
97
|
+
* core_api_server_start_reading_after_accept boolean - default(true)
|
98
|
+
* core_file_descriptor_ulimit unsigned integer - default(0),read_only
|
99
|
+
* core_pid_file string - read_only
|
100
|
+
* daemonize boolean - default(false)
|
101
|
+
* default_abort_websockets_on_process_shutdown boolean - default(true)
|
102
|
+
* default_app_file_descriptor_ulimit unsigned integer - -
|
103
|
+
* default_environment string - default("production")
|
104
|
+
* default_force_max_concurrent_requests_per_process integer - default(-1)
|
105
|
+
* default_friendly_error_pages string - default("auto")
|
106
|
+
* default_group string - default
|
107
|
+
* default_load_shell_envvars boolean - default(false)
|
108
|
+
* default_max_preloader_idle_time unsigned integer - default(300)
|
109
|
+
* default_max_request_queue_size unsigned integer - default(100)
|
110
|
+
* default_max_requests unsigned integer - default(0)
|
111
|
+
* default_meteor_app_settings string - -
|
112
|
+
* default_min_instances unsigned integer - default(1)
|
113
|
+
* default_nodejs string - default("node")
|
114
|
+
* default_python string - default("python")
|
115
|
+
* default_ruby string - default("ruby")
|
116
|
+
* default_server_name string - default
|
117
|
+
* default_server_port unsigned integer - default
|
118
|
+
* default_spawn_method string - default("smart")
|
119
|
+
* default_sticky_sessions boolean - default(false)
|
120
|
+
* default_sticky_sessions_cookie_name string - default("_passenger_route")
|
121
|
+
* default_user string - default("nobody")
|
122
|
+
* file_descriptor_log_target any - -
|
123
|
+
* graceful_exit boolean - default(true)
|
124
|
+
* hook_after_watchdog_initialization string - -
|
125
|
+
* hook_after_watchdog_shutdown string - -
|
126
|
+
* hook_before_watchdog_initialization string - -
|
127
|
+
* hook_before_watchdog_shutdown string - -
|
128
|
+
* instance_registry_dir string - default,read_only
|
129
|
+
* integration_mode string - default("standalone")
|
130
|
+
* log_level string - default("notice")
|
131
|
+
* log_target any - default({"stderr": true})
|
132
|
+
* max_pool_size unsigned integer - default(6)
|
133
|
+
* multi_app boolean - default(false),read_only
|
134
|
+
* passenger_root string required read_only
|
135
|
+
* pidfiles_to_delete_on_exit array of strings - default([])
|
136
|
+
* pool_idle_time unsigned integer - default(300)
|
137
|
+
* pool_selfchecks boolean - default(false)
|
138
|
+
* prestart_urls array of strings - default([]),read_only
|
139
|
+
* response_buffer_high_watermark unsigned integer - default(134217728)
|
140
|
+
* security_update_checker_certificate_path string - -
|
141
|
+
* security_update_checker_disabled boolean - default(false)
|
142
|
+
* security_update_checker_interval unsigned integer - default(86400)
|
143
|
+
* security_update_checker_proxy_url string - -
|
144
|
+
* security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
|
145
|
+
* server_software string - default("Phusion_Passenger/5.2.0")
|
146
|
+
* setsid boolean - default(false)
|
147
|
+
* show_version_in_header boolean - default(true)
|
148
|
+
* single_app_mode_app_root string - default,read_only
|
149
|
+
* single_app_mode_app_type string - read_only
|
150
|
+
* single_app_mode_startup_file string - read_only
|
151
|
+
* standalone_engine string - default
|
152
|
+
* startup_report_file string - -
|
153
|
+
* stat_throttle_rate unsigned integer - default(10)
|
154
|
+
* turbocaching boolean - default(true),read_only
|
155
|
+
* user string - default,read_only
|
156
|
+
* user_switching boolean - default(true)
|
157
|
+
* ust_router_address string - -
|
158
|
+
* ust_router_password string - secret
|
159
|
+
* vary_turbocache_by_cookie string - -
|
160
|
+
* watchdog_api_server_accept_burst_count unsigned integer - default(32)
|
161
|
+
* watchdog_api_server_addresses array of strings - default([]),read_only
|
162
|
+
* watchdog_api_server_authorizations array - default("[FILTERED]"),secret
|
163
|
+
* watchdog_api_server_client_freelist_limit unsigned integer - default(0)
|
164
|
+
* watchdog_api_server_file_buffered_channel_auto_start_mover boolean - default(true)
|
165
|
+
* watchdog_api_server_file_buffered_channel_auto_truncate_file boolean - default(true)
|
166
|
+
* watchdog_api_server_file_buffered_channel_buffer_dir string - default
|
167
|
+
* watchdog_api_server_file_buffered_channel_delay_in_file_mode_switching unsigned integer - default(0)
|
168
|
+
* watchdog_api_server_file_buffered_channel_max_disk_chunk_read_size unsigned integer - default(0)
|
169
|
+
* watchdog_api_server_file_buffered_channel_threshold unsigned integer - default(131072)
|
170
|
+
* watchdog_api_server_mbuf_block_chunk_size unsigned integer - default(4096),read_only
|
171
|
+
* watchdog_api_server_min_spare_clients unsigned integer - default(0)
|
172
|
+
* watchdog_api_server_request_freelist_limit unsigned integer - default(1024)
|
173
|
+
* watchdog_api_server_start_reading_after_accept boolean - default(true)
|
174
|
+
* watchdog_pid_file string - read_only
|
175
|
+
* watchdog_pid_file_autodelete boolean - default(true)
|
176
|
+
* web_server_module_version string - read_only
|
177
|
+
* web_server_version string - read_only
|
178
|
+
*
|
179
|
+
* END
|
180
|
+
*/
|
181
|
+
class Schema: public ConfigKit::Schema {
|
182
|
+
private:
|
183
|
+
/**
|
184
|
+
* Scans `schema` for all options that start with `matchPrefix`. For each matching option,
|
185
|
+
* a translation is inserted in the form of `addPrefix + optionName => optionName`.
|
186
|
+
*/
|
187
|
+
static void addPrefixTranslationsForKeysThatStartWith(const ConfigKit::Schema &schema,
|
188
|
+
ConfigKit::TableTranslator &translator,
|
189
|
+
const StaticString &matchPrefix, const StaticString &addPrefix)
|
190
|
+
{
|
191
|
+
const Json::Value doc = schema.inspect();
|
192
|
+
Json::Value::const_iterator it, end = doc.end();
|
193
|
+
for (it = doc.begin(); it != end; it++) {
|
194
|
+
if (startsWith(it.name(), matchPrefix)) {
|
195
|
+
translator.add(addPrefix + it.name(), it.name());
|
196
|
+
}
|
197
|
+
}
|
198
|
+
}
|
199
|
+
|
200
|
+
// Prefix config options that come from the given schema
|
201
|
+
template<typename SchemaType>
|
202
|
+
static void addSubSchemaPrefixTranslations(ConfigKit::TableTranslator &translator,
|
203
|
+
const StaticString &prefix)
|
204
|
+
{
|
205
|
+
vector<string> keys = SchemaType().inspect().getMemberNames();
|
206
|
+
vector<string>::const_iterator it, end = keys.end();
|
207
|
+
for (it = keys.begin(); it != end; it++) {
|
208
|
+
translator.add(prefix + *it, *it);
|
209
|
+
}
|
210
|
+
}
|
211
|
+
|
212
|
+
// Some options set their default value to this function to indicate
|
213
|
+
// that their actual default values cannot be inferred from a ConfigKit default
|
214
|
+
// value getter function. Instead they are determined inside WatchdogMain.cpp.
|
215
|
+
static Json::Value dummyDefaultValueGetter(const ConfigKit::Store &store) {
|
216
|
+
return Json::Value();
|
217
|
+
}
|
218
|
+
|
219
|
+
static Json::Value getDefaultControllerSecureHeadersPassword(const ConfigKit::Store &store) {
|
220
|
+
return RandomGenerator().generateAsciiString(24);
|
221
|
+
}
|
222
|
+
|
223
|
+
static Json::Value getDefaultUser(const ConfigKit::Store &store) {
|
224
|
+
if (store["user_switching"].asBool()) {
|
225
|
+
return Json::nullValue;
|
226
|
+
} else {
|
227
|
+
return store["default_user"];
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
static Json::Value getDefaultInstanceRegistryDir(const ConfigKit::Store &store) {
|
232
|
+
return getSystemTempDir();
|
233
|
+
}
|
234
|
+
|
235
|
+
static void validateAddresses(const ConfigKit::Store &config, vector<ConfigKit::Error> &errors) {
|
236
|
+
typedef ConfigKit::Error Error;
|
237
|
+
|
238
|
+
if (config["watchdog_api_server_addresses"].size() > SERVER_KIT_MAX_SERVER_ENDPOINTS) {
|
239
|
+
errors.push_back(Error("'{{watchdog_api_server_addresses}}' may contain at most "
|
240
|
+
+ toString(SERVER_KIT_MAX_SERVER_ENDPOINTS) + " items"));
|
241
|
+
}
|
242
|
+
}
|
243
|
+
|
244
|
+
static Json::Value normalizePaths(const Json::Value &effectiveValues) {
|
245
|
+
Json::Value updates;
|
246
|
+
updates["instance_registry_dir"] = absolutizePath(effectiveValues["instance_registry_dir"].asString());
|
247
|
+
if (!effectiveValues["watchdog_pid_file"].isNull()) {
|
248
|
+
updates["watchdog_pid_file"] = absolutizePath(effectiveValues["watchdog_pid_file"].asString());
|
249
|
+
}
|
250
|
+
return updates;
|
251
|
+
}
|
252
|
+
|
253
|
+
public:
|
254
|
+
struct {
|
255
|
+
Core::Schema schema;
|
256
|
+
ConfigKit::TableTranslator translator;
|
257
|
+
} core;
|
258
|
+
struct {
|
259
|
+
ApiServer::Schema schema;
|
260
|
+
ConfigKit::TableTranslator translator;
|
261
|
+
} apiServer;
|
262
|
+
struct {
|
263
|
+
ServerKit::Schema schema;
|
264
|
+
ConfigKit::PrefixTranslator translator;
|
265
|
+
} apiServerKit;
|
266
|
+
|
267
|
+
Schema() {
|
268
|
+
using namespace ConfigKit;
|
269
|
+
|
270
|
+
// Add subschema: core
|
271
|
+
addPrefixTranslationsForKeysThatStartWith(core.schema, core.translator,
|
272
|
+
"api_server_", "core_");
|
273
|
+
core.translator.add("core_authorizations", "authorizations");
|
274
|
+
core.translator.add("core_password", "password");
|
275
|
+
core.translator.add("core_pid_file", "pid_file");
|
276
|
+
core.translator.add("core_file_descriptor_ulimit", "file_descriptor_ulimit");
|
277
|
+
core.translator.finalize();
|
278
|
+
addSubSchema(core.schema, core.translator);
|
279
|
+
erase("instance_dir");
|
280
|
+
erase("watchdog_fd_passing_password");
|
281
|
+
/***********/
|
282
|
+
/***********/
|
283
|
+
|
284
|
+
// Add subschema: apiServer
|
285
|
+
addSubSchemaPrefixTranslations<ServerKit::HttpServerSchema>(
|
286
|
+
apiServer.translator, "watchdog_api_server_");
|
287
|
+
apiServer.translator.add("watchdog_api_server_authorizations", "authorizations");
|
288
|
+
apiServer.translator.finalize();
|
289
|
+
addSubSchema(apiServer.schema, apiServer.translator);
|
290
|
+
erase("fd_passing_password");
|
291
|
+
|
292
|
+
// Add subschema: apiServerKit
|
293
|
+
apiServerKit.translator.setPrefixAndFinalize("watchdog_api_server_");
|
294
|
+
addSubSchema(apiServerKit.schema, apiServerKit.translator);
|
295
|
+
erase("watchdog_api_server_secure_mode_password");
|
296
|
+
|
297
|
+
|
298
|
+
overrideWithDynamicDefault("controller_addresses", STRING_ARRAY_TYPE,
|
299
|
+
OPTIONAL | READ_ONLY, dummyDefaultValueGetter);
|
300
|
+
overrideWithDynamicDefault("controller_pid_file", STRING_TYPE,
|
301
|
+
OPTIONAL | READ_ONLY, dummyDefaultValueGetter);
|
302
|
+
|
303
|
+
overrideWithDynamicDefault("controller_secure_headers_password", STRING_TYPE,
|
304
|
+
OPTIONAL | SECRET | CACHE_DEFAULT_VALUE, getDefaultControllerSecureHeadersPassword);
|
305
|
+
add("watchdog_pid_file", STRING_TYPE, OPTIONAL | READ_ONLY);
|
306
|
+
add("watchdog_pid_file_autodelete", BOOL_TYPE, OPTIONAL, true);
|
307
|
+
add("watchdog_api_server_addresses", STRING_ARRAY_TYPE, OPTIONAL | READ_ONLY, Json::arrayValue);
|
308
|
+
add("setsid", BOOL_TYPE, OPTIONAL, false);
|
309
|
+
add("daemonize", BOOL_TYPE, OPTIONAL, false);
|
310
|
+
add("startup_report_file", STRING_TYPE, OPTIONAL);
|
311
|
+
add("pidfiles_to_delete_on_exit", STRING_ARRAY_TYPE, OPTIONAL, Json::arrayValue);
|
312
|
+
addWithDynamicDefault("user", STRING_TYPE,
|
313
|
+
OPTIONAL | READ_ONLY | CACHE_DEFAULT_VALUE, getDefaultUser);
|
314
|
+
addWithDynamicDefault("instance_registry_dir", STRING_TYPE,
|
315
|
+
OPTIONAL | READ_ONLY | CACHE_DEFAULT_VALUE, getDefaultInstanceRegistryDir);
|
316
|
+
|
317
|
+
add("hook_before_watchdog_initialization", STRING_TYPE, OPTIONAL);
|
318
|
+
add("hook_after_watchdog_initialization", STRING_TYPE, OPTIONAL);
|
319
|
+
add("hook_before_watchdog_shutdown", STRING_TYPE, OPTIONAL);
|
320
|
+
add("hook_after_watchdog_shutdown", STRING_TYPE, OPTIONAL);
|
321
|
+
|
322
|
+
/***********/
|
323
|
+
/***********/
|
324
|
+
|
325
|
+
addValidator(validateAddresses);
|
326
|
+
|
327
|
+
addNormalizer(normalizePaths);
|
328
|
+
|
329
|
+
/***********/
|
330
|
+
/***********/
|
331
|
+
|
332
|
+
finalize();
|
333
|
+
}
|
334
|
+
};
|
335
|
+
|
336
|
+
|
337
|
+
} // namespace Watchdog
|
338
|
+
} // namespace Passenger
|
339
|
+
|
340
|
+
#endif /* _PASSENGER_WATCHDOG_CONFIG_H_ */
|
@@ -25,6 +25,7 @@
|
|
25
25
|
*/
|
26
26
|
|
27
27
|
#include <Shared/Fundamentals/Utils.h>
|
28
|
+
#include <Utils/MessageIO.h>
|
28
29
|
|
29
30
|
class CoreWatcher: public AgentWatcher {
|
30
31
|
protected:
|
@@ -52,9 +53,27 @@ protected:
|
|
52
53
|
}
|
53
54
|
|
54
55
|
virtual void sendStartupArguments(pid_t pid, FileDescriptor &fd) {
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
Json::Value config = watchdogSchema->core.translator.translate(
|
57
|
+
watchdogConfig->inspectEffectiveValues());
|
58
|
+
|
59
|
+
Json::Value::iterator it, end = wo->extraConfigToPassToSubAgents.end();
|
60
|
+
for (it = wo->extraConfigToPassToSubAgents.begin(); it != end; it++) {
|
61
|
+
config[it.name()] = *it;
|
62
|
+
}
|
63
|
+
|
64
|
+
config["pid_file"] = wo->corePidFile;
|
65
|
+
config["watchdog_fd_passing_password"] = wo->fdPassingPassword;
|
66
|
+
config["controller_addresses"] = wo->controllerAddresses;
|
67
|
+
config["api_server_addresses"] = wo->coreApiServerAddresses;
|
68
|
+
config["api_server_authorizations"] = wo->coreApiServerAuthorizations;
|
69
|
+
|
70
|
+
// The special value "-" means "don't set a controller secure headers password".
|
71
|
+
if (config["controller_secure_headers_password"].asString() == "-") {
|
72
|
+
config.removeMember("controller_secure_headers_password");
|
73
|
+
}
|
74
|
+
|
75
|
+
ConfigKit::Store filteredConfig(watchdogSchema->core.schema, config);
|
76
|
+
writeScalarMessage(fd, filteredConfig.inspectEffectiveValues().toStyledString());
|
58
77
|
}
|
59
78
|
|
60
79
|
virtual bool processStartupInfo(pid_t pid, FileDescriptor &fd, const vector<string> &args) {
|
@@ -65,17 +84,12 @@ public:
|
|
65
84
|
CoreWatcher(const WorkingObjectsPtr &wo)
|
66
85
|
: AgentWatcher(wo)
|
67
86
|
{
|
68
|
-
agentFilename =
|
87
|
+
agentFilename = Agent::Fundamentals::context->
|
88
|
+
resourceLocator->findSupportBinary(AGENT_EXE);
|
69
89
|
}
|
70
90
|
|
71
|
-
virtual void
|
72
|
-
|
73
|
-
|
74
|
-
report.set("core_address", addresses.front());
|
75
|
-
report.set("core_password", options.get("core_password"));
|
76
|
-
|
77
|
-
// For backwards compatibility:
|
78
|
-
report.set("server_address", addresses.front());
|
79
|
-
report.set("server_password", options.get("core_password"));
|
91
|
+
virtual void reportAgentStartupResult(Json::Value &report) {
|
92
|
+
report["core_address"] = wo->controllerAddresses[0].asString();
|
93
|
+
report["core_password"] = watchdogConfig->get("controller_secure_headers_password").asString();
|
80
94
|
}
|
81
95
|
};
|
@@ -110,7 +110,7 @@ private:
|
|
110
110
|
|
111
111
|
void
|
112
112
|
threadMain() {
|
113
|
-
string originalOomScore =
|
113
|
+
string originalOomScore = wo->extraConfigToPassToSubAgents["oom_score"].asString();
|
114
114
|
string workingDir = wo->instanceDir->getPath().c_str();
|
115
115
|
|
116
116
|
while (!boost::this_thread::interruption_requested()) {
|
@@ -65,7 +65,9 @@
|
|
65
65
|
#include <Shared/Fundamentals/Initialization.h>
|
66
66
|
#include <Shared/ApiServerUtils.h>
|
67
67
|
#include <Core/OptionParser.h>
|
68
|
+
#include <Watchdog/Config.h>
|
68
69
|
#include <Watchdog/ApiServer.h>
|
70
|
+
#include <JsonTools/Autocast.h>
|
69
71
|
#include <Constants.h>
|
70
72
|
#include <InstanceDirectory.h>
|
71
73
|
#include <FileDescriptor.h>
|
@@ -75,7 +77,6 @@
|
|
75
77
|
#include <Exceptions.h>
|
76
78
|
#include <StaticString.h>
|
77
79
|
#include <Hooks.h>
|
78
|
-
#include <ResourceLocator.h>
|
79
80
|
#include <Utils.h>
|
80
81
|
#include <Utils/Timer.h>
|
81
82
|
#include <Utils/ScopeGuard.h>
|
@@ -106,34 +107,46 @@ class AgentWatcher;
|
|
106
107
|
/***** Working objects *****/
|
107
108
|
|
108
109
|
namespace Passenger {
|
109
|
-
namespace
|
110
|
+
namespace Watchdog {
|
110
111
|
struct WorkingObjects {
|
111
112
|
RandomGenerator randomGenerator;
|
112
113
|
EventFd errorEvent;
|
113
114
|
EventFd exitEvent;
|
114
|
-
ResourceLocatorPtr resourceLocator;
|
115
115
|
uid_t defaultUid;
|
116
116
|
gid_t defaultGid;
|
117
117
|
InstanceDirectoryPtr instanceDir;
|
118
|
-
int
|
118
|
+
int startupReportFile;
|
119
119
|
int lockFile;
|
120
120
|
vector<string> cleanupPidfiles;
|
121
121
|
bool pidsCleanedUp;
|
122
122
|
bool pidFileCleanedUp;
|
123
|
+
string corePidFile;
|
124
|
+
string fdPassingPassword;
|
125
|
+
Json::Value extraConfigToPassToSubAgents;
|
126
|
+
Json::Value controllerAddresses;
|
127
|
+
Json::Value coreApiServerAddresses;
|
128
|
+
Json::Value coreApiServerAuthorizations;
|
129
|
+
Json::Value watchdogApiServerAddresses;
|
130
|
+
Json::Value watchdogApiServerAuthorizations;
|
123
131
|
|
124
|
-
ApiAccountDatabase apiAccountDatabase;
|
125
132
|
int apiServerFds[SERVER_KIT_MAX_SERVER_ENDPOINTS];
|
126
133
|
BackgroundEventLoop *bgloop;
|
127
134
|
ServerKit::Context *serverKitContext;
|
128
|
-
ServerKit::
|
129
|
-
ApiServer *apiServer;
|
135
|
+
ServerKit::Schema serverKitSchema;
|
136
|
+
ApiServer::ApiServer *apiServer;
|
130
137
|
|
131
138
|
WorkingObjects()
|
132
139
|
: errorEvent(__FILE__, __LINE__, "WorkingObjects: errorEvent"),
|
133
140
|
exitEvent(__FILE__, __LINE__, "WorkingObjects: exitEvent"),
|
134
|
-
|
141
|
+
startupReportFile(-1),
|
135
142
|
pidsCleanedUp(false),
|
136
143
|
pidFileCleanedUp(false),
|
144
|
+
extraConfigToPassToSubAgents(Json::objectValue),
|
145
|
+
controllerAddresses(Json::arrayValue),
|
146
|
+
coreApiServerAddresses(Json::arrayValue),
|
147
|
+
coreApiServerAuthorizations(Json::arrayValue),
|
148
|
+
watchdogApiServerAddresses(Json::arrayValue),
|
149
|
+
watchdogApiServerAuthorizations(Json::arrayValue),
|
137
150
|
bgloop(NULL),
|
138
151
|
serverKitContext(NULL),
|
139
152
|
apiServer(NULL)
|
@@ -145,12 +158,13 @@ namespace WatchdogAgent {
|
|
145
158
|
};
|
146
159
|
|
147
160
|
typedef boost::shared_ptr<WorkingObjects> WorkingObjectsPtr;
|
148
|
-
} // namespace
|
161
|
+
} // namespace Watchdog
|
149
162
|
} // namespace Passenger
|
150
163
|
|
151
|
-
using namespace Passenger::
|
164
|
+
using namespace Passenger::Watchdog;
|
152
165
|
|
153
|
-
static
|
166
|
+
static Schema *watchdogSchema;
|
167
|
+
static ConfigKit::Store *watchdogConfig;
|
154
168
|
static WorkingObjects *workingObjects;
|
155
169
|
|
156
170
|
static void cleanup(const WorkingObjectsPtr &wo);
|
@@ -347,10 +361,10 @@ readCleanupPids(const WorkingObjectsPtr &wo) {
|
|
347
361
|
buf[ret] = '\0';
|
348
362
|
result.push_back(atoi(buf));
|
349
363
|
} else {
|
350
|
-
P_WARN("Cannot read cleanup PID file " << filename);
|
364
|
+
P_WARN("Cannot read cleanup PID file " << relative(filename).c_str() << " (" << filename << ")");
|
351
365
|
}
|
352
366
|
} else {
|
353
|
-
P_WARN("Cannot open cleanup PID file " << filename);
|
367
|
+
P_WARN("Cannot open cleanup PID file " << relative(filename).c_str() << " (" << filename << ")");
|
354
368
|
}
|
355
369
|
}
|
356
370
|
|
@@ -378,9 +392,9 @@ killCleanupPids(const WorkingObjectsPtr &wo) {
|
|
378
392
|
|
379
393
|
static void
|
380
394
|
deletePidFile(const WorkingObjectsPtr &wo) {
|
381
|
-
|
382
|
-
if (!pidFile.
|
383
|
-
syscalls::unlink(pidFile.
|
395
|
+
Json::Value pidFile = watchdogConfig->get("watchdog_pid_file");
|
396
|
+
if (!pidFile.isNull() && !wo->pidFileCleanedUp && watchdogConfig->get("watchdog_pid_file_autodelete").asBool()) {
|
397
|
+
syscalls::unlink(pidFile.asCString());
|
384
398
|
wo->pidFileCleanedUp = true;
|
385
399
|
}
|
386
400
|
}
|
@@ -499,25 +513,14 @@ forceAllAgentsShutdown(const WorkingObjectsPtr &wo, vector<AgentWatcherPtr> &wat
|
|
499
513
|
}
|
500
514
|
}
|
501
515
|
|
502
|
-
static string
|
503
|
-
inferDefaultGroup(const string &defaultUser) {
|
504
|
-
struct passwd *userEntry = getpwnam(defaultUser.c_str());
|
505
|
-
if (userEntry == NULL) {
|
506
|
-
throw ConfigurationException(
|
507
|
-
string("The user that PassengerDefaultUser refers to, '") +
|
508
|
-
defaultUser + "', does not exist.");
|
509
|
-
}
|
510
|
-
return getGroupName(userEntry->pw_gid);
|
511
|
-
}
|
512
|
-
|
513
516
|
static void
|
514
517
|
runHookScriptAndThrowOnError(const char *name) {
|
515
518
|
TRACE_POINT();
|
516
519
|
HookScriptOptions options;
|
517
520
|
|
518
521
|
options.name = name;
|
519
|
-
options.spec =
|
520
|
-
options.
|
522
|
+
options.spec = watchdogConfig->get(string("hook_") + name).asString();
|
523
|
+
options.agentConfig = watchdogConfig->inspectEffectiveValues();
|
521
524
|
|
522
525
|
if (!runHookScripts(options)) {
|
523
526
|
throw RuntimeException(string("Hook script ") + name + " failed");
|
@@ -611,13 +614,14 @@ usage() {
|
|
611
614
|
}
|
612
615
|
|
613
616
|
static void
|
614
|
-
parseOptions(int argc, const char *argv[],
|
617
|
+
parseOptions(int argc, const char *argv[], ConfigKit::Store &config) {
|
615
618
|
OptionParser p(usage);
|
619
|
+
Json::Value updates(Json::objectValue);
|
616
620
|
int i = 2;
|
617
621
|
|
618
622
|
while (i < argc) {
|
619
623
|
if (p.isValueFlag(argc, i, argv[i], '\0', "--passenger-root")) {
|
620
|
-
|
624
|
+
updates["passenger_root"] = argv[i + 1];
|
621
625
|
i += 2;
|
622
626
|
} else if (p.isFlag(argv[i], '\0', "--BC")
|
623
627
|
|| p.isFlag(argv[i], '\0', "--begin-core-args"))
|
@@ -633,10 +637,20 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
|
|
633
637
|
|| p.isFlag(argv[i], '\0', "--begin-ust-router-args"))
|
634
638
|
{
|
635
639
|
break;
|
636
|
-
} else
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
+
} else {
|
641
|
+
Json::Value coreUpdates(Json::objectValue);
|
642
|
+
if (!parseCoreOption(argc, argv, i, coreUpdates)) {
|
643
|
+
fprintf(stderr, "ERROR: unrecognized core argument %s. Please "
|
644
|
+
"type '%s core --help' for usage.\n", argv[i], argv[0]);
|
645
|
+
exit(1);
|
646
|
+
}
|
647
|
+
|
648
|
+
Json::Value::iterator it, end = coreUpdates.end();
|
649
|
+
for (it = coreUpdates.begin(); it != end; it++) {
|
650
|
+
string translatedName = watchdogSchema->core.translator.
|
651
|
+
reverseTranslateOne(it.name());
|
652
|
+
updates[translatedName] = *it;
|
653
|
+
}
|
640
654
|
}
|
641
655
|
}
|
642
656
|
} else if (p.isFlag(argv[i], '\0', "--BU")
|
@@ -661,15 +675,13 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
|
|
661
675
|
}
|
662
676
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--api-listen")) {
|
663
677
|
if (getSocketAddressType(argv[i + 1]) != SAT_UNKNOWN) {
|
664
|
-
|
665
|
-
false);
|
678
|
+
Json::Value &addresses = updates["watchdog_api_server_addresses"];
|
666
679
|
if (addresses.size() == SERVER_KIT_MAX_SERVER_ENDPOINTS - 1) {
|
667
680
|
fprintf(stderr, "ERROR: you may specify up to %u --api-listen addresses.\n",
|
668
681
|
SERVER_KIT_MAX_SERVER_ENDPOINTS - 1);
|
669
682
|
exit(1);
|
670
683
|
}
|
671
|
-
addresses.
|
672
|
-
options.setStrSet("watchdog_api_addresses", addresses);
|
684
|
+
addresses.append(argv[i + 1]);
|
673
685
|
i += 2;
|
674
686
|
} else {
|
675
687
|
fprintf(stderr, "ERROR: invalid address format for --api-listen. The address "
|
@@ -679,9 +691,6 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
|
|
679
691
|
}
|
680
692
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--authorize")) {
|
681
693
|
vector<string> args;
|
682
|
-
vector<string> authorizations = options.getStrSet("watchdog_authorizations",
|
683
|
-
false);
|
684
|
-
|
685
694
|
split(argv[i + 1], ':', args);
|
686
695
|
if (args.size() < 2 || args.size() > 3) {
|
687
696
|
fprintf(stderr, "ERROR: invalid format for --authorize. The syntax "
|
@@ -689,46 +698,43 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
|
|
689
698
|
exit(1);
|
690
699
|
}
|
691
700
|
|
692
|
-
|
693
|
-
options.setStrSet("watchdog_authorizations", authorizations);
|
701
|
+
updates["watchdog_api_server_authorizations"].append(argv[i + 1]);
|
694
702
|
i += 2;
|
695
703
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--instance-registry-dir")) {
|
696
|
-
|
704
|
+
updates["instance_registry_dir"] = argv[i + 1];
|
697
705
|
i += 2;
|
698
706
|
} else if (p.isFlag(argv[i], '\0', "--no-user-switching")) {
|
699
|
-
|
707
|
+
updates["user_switching"] = false;
|
700
708
|
i++;
|
701
709
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--default-user")) {
|
702
|
-
|
710
|
+
updates["default_user"] = argv[i + 1];
|
703
711
|
i += 2;
|
704
712
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--default-group")) {
|
705
|
-
|
713
|
+
updates["default_group"] = argv[i + 1];
|
706
714
|
i += 2;
|
707
715
|
} else if (p.isFlag(argv[i], '\0', "--daemonize")) {
|
708
|
-
|
716
|
+
updates["daemonize"] = true;
|
709
717
|
i++;
|
710
718
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--user")) {
|
711
|
-
|
719
|
+
updates["user"] = argv[i + 1];
|
712
720
|
i += 2;
|
713
721
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--pid-file")) {
|
714
|
-
|
722
|
+
updates["watchdog_pid_file"] = argv[i + 1];
|
715
723
|
i += 2;
|
716
724
|
} else if (p.isFlag(argv[i], '\0', "--no-delete-pid-file")) {
|
717
|
-
|
725
|
+
updates["watchdog_pid_file_autodelete"] = false;
|
718
726
|
i++;
|
719
727
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--log-level")) {
|
720
|
-
|
728
|
+
updates["log_level"] = argv[i + 1];
|
721
729
|
i += 2;
|
722
730
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--report-file")) {
|
723
|
-
|
731
|
+
updates["startup_report_file"] = argv[i + 1];
|
724
732
|
i += 2;
|
725
733
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--cleanup-pidfile")) {
|
726
|
-
|
727
|
-
pidfiles.push_back(argv[i + 1]);
|
728
|
-
options.setStrSet("cleanup_pidfiles", pidfiles);
|
734
|
+
updates["pidfiles_to_delete_on_exit"].append(argv[i + 1]);
|
729
735
|
i += 2;
|
730
736
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--log-file")) {
|
731
|
-
|
737
|
+
updates["log_target"] = argv[i + 1];
|
732
738
|
i += 2;
|
733
739
|
} else if (p.isValueFlag(argc, i, argv[i], '\0', "--ctl")) {
|
734
740
|
const char *value = strchr(argv[i + 1], '=');
|
@@ -744,7 +750,7 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
|
|
744
750
|
"The value must be non-empty.\n", argv[i + 1]);
|
745
751
|
exit(1);
|
746
752
|
}
|
747
|
-
|
753
|
+
updates[name] = autocastValueToJson(value);
|
748
754
|
i += 2;
|
749
755
|
} else if (p.isFlag(argv[i], 'h', "--help")) {
|
750
756
|
usage();
|
@@ -755,6 +761,15 @@ parseOptions(int argc, const char *argv[], VariantMap &options) {
|
|
755
761
|
exit(1);
|
756
762
|
}
|
757
763
|
}
|
764
|
+
|
765
|
+
if (!updates.empty()) {
|
766
|
+
vector<ConfigKit::Error> errors;
|
767
|
+
if (!config.update(updates, errors)) {
|
768
|
+
P_BUG("Unable to set initial configuration: " <<
|
769
|
+
ConfigKit::toString(errors) << "\n"
|
770
|
+
"Raw initial configuration: " << updates.toStyledString());
|
771
|
+
}
|
772
|
+
}
|
758
773
|
}
|
759
774
|
|
760
775
|
static void
|
@@ -778,47 +793,18 @@ initializeBareEssentials(int argc, char *argv[], WorkingObjectsPtr &wo) {
|
|
778
793
|
*/
|
779
794
|
string oldOomScore = setOomScoreNeverKill();
|
780
795
|
|
781
|
-
|
782
|
-
|
796
|
+
watchdogSchema = new Schema();
|
797
|
+
watchdogConfig = new ConfigKit::Store(*watchdogSchema);
|
798
|
+
initializeAgent(argc, &argv, SHORT_PROGRAM_NAME " watchdog",
|
799
|
+
*watchdogConfig, watchdogSchema->core.schema.loggingKit.translator,
|
783
800
|
parseOptions, NULL, 2);
|
784
|
-
agentsOptions->set("original_oom_score", oldOomScore);
|
785
801
|
|
786
802
|
// Start all sub-agents with this environment variable.
|
787
803
|
setenv("PASSENGER_USE_FEEDBACK_FD", "true", 1);
|
788
804
|
|
789
805
|
wo = boost::make_shared<WorkingObjects>();
|
790
806
|
workingObjects = wo.get();
|
791
|
-
|
792
|
-
|
793
|
-
static void
|
794
|
-
setAgentsOptionsDefaults() {
|
795
|
-
VariantMap &options = *agentsOptions;
|
796
|
-
|
797
|
-
options.setDefault("instance_registry_dir", getSystemTempDir());
|
798
|
-
options.setDefaultBool("user_switching", true);
|
799
|
-
options.setDefault("default_user", DEFAULT_WEB_APP_USER);
|
800
|
-
if (!options.has("default_group")) {
|
801
|
-
options.set("default_group",
|
802
|
-
inferDefaultGroup(options.get("default_user")));
|
803
|
-
}
|
804
|
-
options.setDefault("integration_mode", DEFAULT_INTEGRATION_MODE);
|
805
|
-
if (options.get("integration_mode") == "standalone") {
|
806
|
-
options.setDefault("standalone_engine", "builtin");
|
807
|
-
}
|
808
|
-
options.setDefault("server_software", SERVER_TOKEN_NAME "/" PASSENGER_VERSION);
|
809
|
-
options.setDefaultStrSet("cleanup_pidfiles", vector<string>());
|
810
|
-
options.setDefault("data_buffer_dir", getSystemTempDir());
|
811
|
-
options.setDefaultBool("delete_pid_file", true);
|
812
|
-
}
|
813
|
-
|
814
|
-
static void
|
815
|
-
sanityCheckOptions() {
|
816
|
-
VariantMap &options = *agentsOptions;
|
817
|
-
|
818
|
-
if (!options.has("passenger_root")) {
|
819
|
-
fprintf(stderr, "ERROR: please set the --passenger-root argument.\n");
|
820
|
-
exit(1);
|
821
|
-
}
|
807
|
+
wo->extraConfigToPassToSubAgents["oom_score"] = oldOomScore;
|
822
808
|
}
|
823
809
|
|
824
810
|
static void
|
@@ -831,7 +817,7 @@ maybeSetsid() {
|
|
831
817
|
* WatchdogLauncher.h already calls setsid() before exec()ing
|
832
818
|
* the Watchdog, but Flying Passenger does not.
|
833
819
|
*/
|
834
|
-
if (
|
820
|
+
if (watchdogConfig->get("setsid").asBool()) {
|
835
821
|
setsid();
|
836
822
|
}
|
837
823
|
}
|
@@ -850,7 +836,7 @@ maybeDaemonize() {
|
|
850
836
|
pid_t pid;
|
851
837
|
int e;
|
852
838
|
|
853
|
-
if (
|
839
|
+
if (watchdogConfig->get("daemonize").asBool()) {
|
854
840
|
pid = fork();
|
855
841
|
if (pid == 0) {
|
856
842
|
setsid();
|
@@ -867,16 +853,17 @@ maybeDaemonize() {
|
|
867
853
|
static void
|
868
854
|
createPidFile() {
|
869
855
|
TRACE_POINT();
|
870
|
-
|
871
|
-
if (!pidFile.
|
856
|
+
Json::Value pidFile = watchdogConfig->get("watchdog_pid_file");
|
857
|
+
if (!pidFile.isNull()) {
|
872
858
|
char pidStr[32];
|
873
859
|
|
874
860
|
snprintf(pidStr, sizeof(pidStr), "%lld", (long long) getpid());
|
875
861
|
|
876
|
-
int fd = syscalls::open(pidFile.
|
862
|
+
int fd = syscalls::open(pidFile.asCString(), O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
877
863
|
if (fd == -1) {
|
878
864
|
int e = errno;
|
879
|
-
throw FileSystemException("Cannot create PID file " + pidFile,
|
865
|
+
throw FileSystemException("Cannot create PID file " + pidFile.asString(),
|
866
|
+
e, pidFile.asString());
|
880
867
|
}
|
881
868
|
|
882
869
|
UPDATE_TRACE_POINT();
|
@@ -886,26 +873,27 @@ createPidFile() {
|
|
886
873
|
}
|
887
874
|
|
888
875
|
static void
|
889
|
-
|
876
|
+
openStartupReportFile(const WorkingObjectsPtr &wo) {
|
890
877
|
TRACE_POINT();
|
891
|
-
|
892
|
-
if (!
|
893
|
-
int fd = syscalls::open(
|
878
|
+
Json::Value path = watchdogConfig->get("startup_report_file");
|
879
|
+
if (!path.isNull()) {
|
880
|
+
int fd = syscalls::open(path.asCString(), O_WRONLY | O_CREAT | O_TRUNC, 0600);
|
894
881
|
if (fd == -1) {
|
895
882
|
int e = errno;
|
896
|
-
throw FileSystemException("Cannot open report file " +
|
883
|
+
throw FileSystemException("Cannot open report file " + path.asString(),
|
884
|
+
e, path.asString());
|
897
885
|
}
|
898
886
|
|
899
|
-
P_LOG_FILE_DESCRIPTOR_OPEN4(fd, __FILE__, __LINE__, "WorkingObjects:
|
900
|
-
wo->
|
887
|
+
P_LOG_FILE_DESCRIPTOR_OPEN4(fd, __FILE__, __LINE__, "WorkingObjects: startupReportFile");
|
888
|
+
wo->startupReportFile = fd;
|
901
889
|
}
|
902
890
|
}
|
903
891
|
|
904
892
|
static void
|
905
893
|
chdirToTmpDir() {
|
906
|
-
|
907
|
-
if (pidfiles.
|
908
|
-
string str = pidfiles.
|
894
|
+
const Json::Value pidfiles = watchdogConfig->get("pidfiles_to_delete_on_exit");
|
895
|
+
if (!pidfiles.empty()) {
|
896
|
+
string str = pidfiles[0].asString();
|
909
897
|
string dir = str.substr(0,str.find_last_of('/'));
|
910
898
|
if (dir != "" && chdir(dir.c_str()) == -1) {
|
911
899
|
throw RuntimeException("Cannot change working directory to " + dir);
|
@@ -916,8 +904,7 @@ chdirToTmpDir() {
|
|
916
904
|
static void
|
917
905
|
lowerPrivilege() {
|
918
906
|
TRACE_POINT();
|
919
|
-
|
920
|
-
string userName = options.get("user", false);
|
907
|
+
string userName = watchdogConfig->get("user").asString();
|
921
908
|
|
922
909
|
if (geteuid() == 0 && !userName.empty()) {
|
923
910
|
struct passwd *pwUser = getpwnam(userName.c_str());
|
@@ -965,9 +952,8 @@ lowerPrivilege() {
|
|
965
952
|
|
966
953
|
static void
|
967
954
|
lookupDefaultUidGid(uid_t &uid, gid_t &gid) {
|
968
|
-
|
969
|
-
const string
|
970
|
-
const string &defaultGroup = options.get("default_group");
|
955
|
+
const string defaultUser = watchdogConfig->get("default_user").asString();
|
956
|
+
const string defaultGroup = watchdogConfig->get("default_group").asString();
|
971
957
|
struct passwd *userEntry;
|
972
958
|
|
973
959
|
userEntry = getpwnam(defaultUser.c_str());
|
@@ -989,39 +975,32 @@ initializeWorkingObjects(const WorkingObjectsPtr &wo, InstanceDirToucherPtr &ins
|
|
989
975
|
uid_t uidBeforeLoweringPrivilege)
|
990
976
|
{
|
991
977
|
TRACE_POINT();
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
options.set("instance_registry_dir",
|
996
|
-
absolutizePath(options.get("instance_registry_dir")));
|
997
|
-
if (options.get("server_software").find(SERVER_TOKEN_NAME) == string::npos
|
998
|
-
&& options.get("server_software").find(FLYING_PASSENGER_NAME) == string::npos)
|
999
|
-
{
|
1000
|
-
options.set("server_software", options.get("server_software") +
|
1001
|
-
(" " SERVER_TOKEN_NAME "/" PASSENGER_VERSION));
|
1002
|
-
}
|
1003
|
-
|
1004
|
-
wo->resourceLocator = boost::make_shared<ResourceLocator>(agentsOptions->get("passenger_root"));
|
978
|
+
Json::Value doc;
|
979
|
+
Json::Value::iterator it, end;
|
1005
980
|
|
1006
981
|
UPDATE_TRACE_POINT();
|
1007
982
|
lookupDefaultUidGid(wo->defaultUid, wo->defaultGid);
|
1008
|
-
|
983
|
+
|
984
|
+
doc = watchdogConfig->get("pidfiles_to_delete_on_exit");
|
985
|
+
for (it = doc.begin(); it != doc.end(); it++) {
|
986
|
+
wo->cleanupPidfiles.push_back(it->asString());
|
987
|
+
}
|
1009
988
|
|
1010
989
|
UPDATE_TRACE_POINT();
|
1011
990
|
InstanceDirectory::CreationOptions instanceOptions;
|
1012
|
-
instanceOptions.userSwitching =
|
991
|
+
instanceOptions.userSwitching = watchdogConfig->get("user_switching").asBool();
|
1013
992
|
instanceOptions.originalUid = uidBeforeLoweringPrivilege;
|
1014
993
|
instanceOptions.defaultUid = wo->defaultUid;
|
1015
994
|
instanceOptions.defaultGid = wo->defaultGid;
|
1016
995
|
instanceOptions.properties["name"] = wo->randomGenerator.generateAsciiString(8);
|
1017
|
-
instanceOptions.properties["integration_mode"] =
|
1018
|
-
instanceOptions.properties["server_software"] =
|
1019
|
-
if (
|
1020
|
-
instanceOptions.properties["standalone_engine"] =
|
996
|
+
instanceOptions.properties["integration_mode"] = watchdogConfig->get("integration_mode").asString();
|
997
|
+
instanceOptions.properties["server_software"] = watchdogConfig->get("server_software").asString();
|
998
|
+
if (watchdogConfig->get("integration_mode").asString() == "standalone") {
|
999
|
+
instanceOptions.properties["standalone_engine"] = watchdogConfig->get("standalone_engine").asString();
|
1021
1000
|
}
|
1022
1001
|
wo->instanceDir = boost::make_shared<InstanceDirectory>(instanceOptions,
|
1023
|
-
|
1024
|
-
|
1002
|
+
watchdogConfig->get("instance_registry_dir").asString());
|
1003
|
+
wo->extraConfigToPassToSubAgents["instance_dir"] = wo->instanceDir->getPath();
|
1025
1004
|
instanceDirToucher = boost::make_shared<InstanceDirToucher>(wo);
|
1026
1005
|
|
1027
1006
|
UPDATE_TRACE_POINT();
|
@@ -1039,7 +1018,7 @@ initializeWorkingObjects(const WorkingObjectsPtr &wo, InstanceDirToucherPtr &ins
|
|
1039
1018
|
UPDATE_TRACE_POINT();
|
1040
1019
|
string readOnlyAdminPassword = wo->randomGenerator.generateAsciiString(24);
|
1041
1020
|
string fullAdminPassword = wo->randomGenerator.generateAsciiString(24);
|
1042
|
-
if (geteuid() == 0 && !
|
1021
|
+
if (geteuid() == 0 && !watchdogConfig->get("user_switching").asBool()) {
|
1043
1022
|
createFile(wo->instanceDir->getPath() + "/read_only_admin_password.txt",
|
1044
1023
|
readOnlyAdminPassword, S_IRUSR, wo->defaultUid, wo->defaultGid);
|
1045
1024
|
createFile(wo->instanceDir->getPath() + "/full_admin_password.txt",
|
@@ -1050,31 +1029,38 @@ initializeWorkingObjects(const WorkingObjectsPtr &wo, InstanceDirToucherPtr &ins
|
|
1050
1029
|
createFile(wo->instanceDir->getPath() + "/full_admin_password.txt",
|
1051
1030
|
fullAdminPassword, S_IRUSR | S_IWUSR);
|
1052
1031
|
}
|
1053
|
-
|
1054
|
-
|
1032
|
+
|
1033
|
+
if (watchdogConfig->get("core_pid_file").isNull()) {
|
1034
|
+
wo->corePidFile = wo->instanceDir->getPath() + "/core.pid";
|
1035
|
+
} else {
|
1036
|
+
wo->corePidFile = watchdogConfig->get("core_pid_file").asString();
|
1037
|
+
}
|
1038
|
+
wo->fdPassingPassword = wo->randomGenerator.generateAsciiString(24);
|
1055
1039
|
|
1056
1040
|
UPDATE_TRACE_POINT();
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1041
|
+
wo->controllerAddresses.append("unix:" + wo->instanceDir->getPath() + "/agents.s/core");
|
1042
|
+
doc = watchdogConfig->get("controller_addresses");
|
1043
|
+
for (it = doc.begin(); it != doc.end(); it++) {
|
1044
|
+
wo->controllerAddresses.append(*it);
|
1045
|
+
}
|
1046
|
+
|
1047
|
+
wo->coreApiServerAddresses.append("unix:" + wo->instanceDir->getPath() + "/agents.s/core_api");
|
1048
|
+
doc = watchdogConfig->get("core_api_server_addresses");
|
1049
|
+
for (it = doc.begin(); it != doc.end(); it++) {
|
1050
|
+
wo->coreApiServerAddresses.append(*it);
|
1051
|
+
}
|
1068
1052
|
|
1069
1053
|
UPDATE_TRACE_POINT();
|
1070
|
-
|
1071
|
-
strset.insert(strset.begin(),
|
1054
|
+
wo->coreApiServerAuthorizations.append(
|
1072
1055
|
"readonly:ro_admin:" + wo->instanceDir->getPath() +
|
1073
1056
|
"/read_only_admin_password.txt");
|
1074
|
-
|
1057
|
+
wo->coreApiServerAuthorizations.append(
|
1075
1058
|
"full:admin:" + wo->instanceDir->getPath() +
|
1076
1059
|
"/full_admin_password.txt");
|
1077
|
-
|
1060
|
+
doc = watchdogConfig->get("core_api_server_authorizations");
|
1061
|
+
for (it = doc.begin(); it != doc.end(); it++) {
|
1062
|
+
wo->coreApiServerAuthorizations.append(*it);
|
1063
|
+
}
|
1078
1064
|
}
|
1079
1065
|
|
1080
1066
|
static void
|
@@ -1095,57 +1081,65 @@ makeFileWorldReadableAndWritable(const string &path) {
|
|
1095
1081
|
static void
|
1096
1082
|
initializeApiServer(const WorkingObjectsPtr &wo) {
|
1097
1083
|
TRACE_POINT();
|
1098
|
-
|
1099
|
-
|
1100
|
-
vector<string> apiAddresses = options.getStrSet("watchdog_api_addresses", false);
|
1084
|
+
Json::Value doc;
|
1085
|
+
Json::Value::iterator it;
|
1101
1086
|
string description;
|
1102
1087
|
|
1103
1088
|
UPDATE_TRACE_POINT();
|
1104
|
-
|
1089
|
+
wo->watchdogApiServerAuthorizations.append(
|
1105
1090
|
"readonly:ro_admin:" + wo->instanceDir->getPath() +
|
1106
1091
|
"/read_only_admin_password.txt");
|
1107
|
-
|
1092
|
+
wo->watchdogApiServerAuthorizations.append(
|
1108
1093
|
"full:admin:" + wo->instanceDir->getPath() +
|
1109
1094
|
"/full_admin_password.txt");
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
try {
|
1114
|
-
wo->apiAccountDatabase.add(description);
|
1115
|
-
} catch (const ArgumentException &e) {
|
1116
|
-
throw std::runtime_error(e.what());
|
1117
|
-
}
|
1095
|
+
doc = watchdogConfig->get("watchdog_api_server_authorizations");
|
1096
|
+
for (it = doc.begin(); it != doc.end(); it++) {
|
1097
|
+
wo->watchdogApiServerAuthorizations.append(*it);
|
1118
1098
|
}
|
1119
1099
|
|
1120
1100
|
UPDATE_TRACE_POINT();
|
1121
|
-
|
1122
|
-
"unix:" + wo->instanceDir->getPath() +
|
1123
|
-
|
1101
|
+
wo->watchdogApiServerAddresses.append(
|
1102
|
+
"unix:" + wo->instanceDir->getPath() +
|
1103
|
+
"/agents.s/watchdog_api");
|
1104
|
+
doc = watchdogConfig->get("watchdog_api_server_addresses");
|
1105
|
+
for (it = doc.begin(); it != doc.end(); it++) {
|
1106
|
+
wo->watchdogApiServerAddresses.append(*it);
|
1107
|
+
}
|
1124
1108
|
|
1125
1109
|
UPDATE_TRACE_POINT();
|
1126
|
-
for (unsigned int i = 0; i <
|
1127
|
-
|
1128
|
-
|
1110
|
+
for (unsigned int i = 0; i < wo->watchdogApiServerAddresses.size(); i++) {
|
1111
|
+
string address = wo->watchdogApiServerAddresses[i].asString();
|
1112
|
+
P_DEBUG("API server will listen on " << address);
|
1113
|
+
wo->apiServerFds[i] = createServer(address, 0, true,
|
1129
1114
|
__FILE__, __LINE__);
|
1130
|
-
if (getSocketAddressType(
|
1131
|
-
makeFileWorldReadableAndWritable(parseUnixSocketAddress(
|
1115
|
+
if (getSocketAddressType(address) == SAT_UNIX) {
|
1116
|
+
makeFileWorldReadableAndWritable(parseUnixSocketAddress(address));
|
1132
1117
|
}
|
1133
1118
|
}
|
1134
1119
|
|
1135
1120
|
UPDATE_TRACE_POINT();
|
1121
|
+
Json::Value contextConfig = watchdogConfig->inspectEffectiveValues();
|
1136
1122
|
wo->bgloop = new BackgroundEventLoop(true, true);
|
1137
|
-
wo->serverKitContext = new ServerKit::Context(
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1123
|
+
wo->serverKitContext = new ServerKit::Context(
|
1124
|
+
watchdogSchema->apiServerKit.schema,
|
1125
|
+
contextConfig,
|
1126
|
+
watchdogSchema->apiServerKit.translator);
|
1127
|
+
wo->serverKitContext->libev = wo->bgloop->safe;
|
1128
|
+
wo->serverKitContext->libuv = wo->bgloop->libuv_loop;
|
1129
|
+
wo->serverKitContext->initialize();
|
1141
1130
|
|
1142
1131
|
UPDATE_TRACE_POINT();
|
1143
|
-
|
1144
|
-
|
1132
|
+
Json::Value apiServerConfig = watchdogConfig->inspectEffectiveValues();
|
1133
|
+
apiServerConfig["fd_passing_password"] = wo->fdPassingPassword;
|
1134
|
+
apiServerConfig["authorizations"] = wo->watchdogApiServerAuthorizations;
|
1135
|
+
wo->apiServer = new ApiServer::ApiServer(
|
1136
|
+
wo->serverKitContext,
|
1137
|
+
watchdogSchema->apiServer.schema,
|
1138
|
+
apiServerConfig,
|
1139
|
+
watchdogSchema->apiServer.translator);
|
1145
1140
|
wo->apiServer->exitEvent = &wo->exitEvent;
|
1146
|
-
wo->apiServer->fdPassingPassword = options.get("watchdog_fd_passing_password");
|
1147
1141
|
wo->apiServer->initialize();
|
1148
|
-
for (unsigned int i = 0; i <
|
1142
|
+
for (unsigned int i = 0; i < wo->watchdogApiServerAddresses.size(); i++) {
|
1149
1143
|
wo->apiServer->listen(wo->apiServerFds[i]);
|
1150
1144
|
}
|
1151
1145
|
}
|
@@ -1199,34 +1193,27 @@ beginWatchingAgents(const WorkingObjectsPtr &wo, vector<AgentWatcherPtr> &watche
|
|
1199
1193
|
}
|
1200
1194
|
|
1201
1195
|
static void
|
1202
|
-
|
1196
|
+
reportStartupResult(const WorkingObjectsPtr &wo, const vector<AgentWatcherPtr> &watchers) {
|
1203
1197
|
TRACE_POINT();
|
1204
|
-
|
1198
|
+
Json::Value report;
|
1205
1199
|
|
1206
|
-
report
|
1200
|
+
report["instance_dir"] = wo->instanceDir->getPath();
|
1207
1201
|
|
1208
1202
|
foreach (AgentWatcherPtr watcher, watchers) {
|
1209
|
-
watcher->
|
1203
|
+
watcher->reportAgentStartupResult(report);
|
1210
1204
|
}
|
1211
1205
|
|
1212
1206
|
if (feedbackFdAvailable()) {
|
1213
|
-
|
1207
|
+
writeArrayMessage(FEEDBACK_FD, "Agents information", NULL);
|
1208
|
+
writeScalarMessage(FEEDBACK_FD, report.toStyledString());
|
1214
1209
|
}
|
1215
1210
|
|
1216
|
-
if (wo->
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
doc[it->first] = it->second;
|
1223
|
-
}
|
1224
|
-
str = doc.toStyledString();
|
1225
|
-
|
1226
|
-
writeExact(wo->reportFile, str.data(), str.size());
|
1227
|
-
close(wo->reportFile);
|
1228
|
-
P_LOG_FILE_DESCRIPTOR_CLOSE(wo->reportFile);
|
1229
|
-
wo->reportFile = -1;
|
1211
|
+
if (wo->startupReportFile != -1) {
|
1212
|
+
string str = report.toStyledString();
|
1213
|
+
writeExact(wo->startupReportFile, str.data(), str.size());
|
1214
|
+
close(wo->startupReportFile);
|
1215
|
+
P_LOG_FILE_DESCRIPTOR_CLOSE(wo->startupReportFile);
|
1216
|
+
wo->startupReportFile = -1;
|
1230
1217
|
}
|
1231
1218
|
}
|
1232
1219
|
|
@@ -1262,10 +1249,7 @@ watchdogMain(int argc, char *argv[]) {
|
|
1262
1249
|
WorkingObjectsPtr wo;
|
1263
1250
|
|
1264
1251
|
initializeBareEssentials(argc, argv, wo);
|
1265
|
-
setAgentsOptionsDefaults();
|
1266
|
-
sanityCheckOptions();
|
1267
1252
|
P_NOTICE("Starting " SHORT_PROGRAM_NAME " watchdog...");
|
1268
|
-
P_DEBUG("Watchdog options: " << agentsOptions->inspect());
|
1269
1253
|
InstanceDirToucherPtr instanceDirToucher;
|
1270
1254
|
vector<AgentWatcherPtr> watchers;
|
1271
1255
|
uid_t uidBeforeLoweringPrivilege = geteuid();
|
@@ -1275,7 +1259,7 @@ watchdogMain(int argc, char *argv[]) {
|
|
1275
1259
|
maybeSetsid();
|
1276
1260
|
maybeDaemonize();
|
1277
1261
|
createPidFile();
|
1278
|
-
|
1262
|
+
openStartupReportFile(wo);
|
1279
1263
|
chdirToTmpDir();
|
1280
1264
|
lowerPrivilege();
|
1281
1265
|
initializeWorkingObjects(wo, instanceDirToucher, uidBeforeLoweringPrivilege);
|
@@ -1309,7 +1293,7 @@ watchdogMain(int argc, char *argv[]) {
|
|
1309
1293
|
TRACE_POINT();
|
1310
1294
|
startAgents(wo, watchers);
|
1311
1295
|
beginWatchingAgents(wo, watchers);
|
1312
|
-
|
1296
|
+
reportStartupResult(wo, watchers);
|
1313
1297
|
finalizeInstanceDir(wo);
|
1314
1298
|
P_INFO("All " PROGRAM_NAME " agents started!");
|
1315
1299
|
UPDATE_TRACE_POINT();
|