passenger 6.2.0 → 6.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +33 -1
- data/CONTRIBUTING.md +7 -311
- data/CONTRIBUTORS +1 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/bin/passenger +1 -1
- data/bin/passenger-config +1 -1
- data/bin/passenger-install-apache2-module +1 -1
- data/bin/passenger-install-nginx-module +4 -9
- data/bin/passenger-memory-stats +1 -1
- data/bin/passenger-status +1 -1
- data/build/agent.rb +13 -15
- data/build/apache2.rb +13 -16
- data/build/basics.rb +10 -13
- data/build/common_library.rb +5 -9
- data/build/cxx_tests.rb +37 -12
- data/build/integration_tests.rb +5 -2
- data/build/misc.rb +1 -1
- data/build/nginx.rb +1 -1
- data/build/node_tests.rb +1 -1
- data/build/oxt_tests.rb +6 -8
- data/build/packaging.rb +1 -1
- data/build/ruby_extension.rb +1 -1
- data/build/ruby_tests.rb +1 -1
- data/build/schema_printer.rb +13 -15
- data/build/support/cplusplus.rb +61 -69
- data/build/support/cxx_dependency_map.rb +2 -1
- data/build/support/general.rb +1 -1
- data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
- data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +1 -1
- data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +1 -1
- data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +1 -1
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +1 -1
- data/build/test_basics.rb +1 -1
- data/dev/copy_boost_headers +1 -1
- data/dev/index_cxx_dependencies.rb +5 -1
- data/dev/libev-changes.patch +108 -0
- data/dev/nginx_version_sha256 +1 -1
- data/dev/ruby_server.rb +1 -6
- data/dev/upgrading_libuv.sh +16 -0
- data/doc/BasicArchitectureOverview.md +55 -0
- data/doc/BuildCaching.md +23 -0
- data/doc/BuildSystem.md +49 -0
- data/doc/DebuggingAndStressTesting.md +2 -0
- data/doc/DesignAspects/LimitedGemDependencies.md +1 -0
- data/doc/DevEnvironmentSetup.md +46 -0
- data/doc/DevHandbook.md +28 -0
- data/doc/Packaging.md +1 -1
- data/doc/RunningTests.md +88 -0
- data/doc/{TempFileHandling.md → SecureTempFileHandling.md} +1 -1
- data/doc/{CxxTestingGuide.md → WritingCxxTests.md} +1 -20
- data/src/agent/AgentMain.cpp +1 -1
- data/src/agent/Core/ApiServer.h +1 -1
- data/src/agent/Core/ApplicationPool/AbstractSession.h +1 -1
- data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +1 -1
- data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +1 -1
- data/src/agent/Core/ApplicationPool/Common.h +1 -1
- data/src/agent/Core/ApplicationPool/Context.h +1 -1
- data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/Verification.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group.h +1 -1
- data/src/agent/Core/ApplicationPool/Implementation.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Options.h +1 -1
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool.h +1 -1
- data/src/agent/Core/ApplicationPool/Process.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Process.h +1 -1
- data/src/agent/Core/ApplicationPool/Session.h +1 -1
- data/src/agent/Core/ApplicationPool/Socket.h +1 -1
- data/src/agent/Core/ApplicationPool/TestSession.h +1 -1
- data/src/agent/Core/Config.h +3 -2
- data/src/agent/Core/ConfigChange.cpp +1 -1
- data/src/agent/Core/ConfigChange.h +1 -1
- data/src/agent/Core/Controller/AppResponse.h +1 -1
- data/src/agent/Core/Controller/BufferBody.cpp +1 -1
- data/src/agent/Core/Controller/CheckoutSession.cpp +8 -5
- data/src/agent/Core/Controller/Client.h +1 -1
- data/src/agent/Core/Controller/Config.cpp +1 -1
- data/src/agent/Core/Controller/Config.h +2 -2
- data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
- data/src/agent/Core/Controller/Hooks.cpp +12 -9
- data/src/agent/Core/Controller/Implementation.cpp +1 -1
- data/src/agent/Core/Controller/InitRequest.cpp +1 -1
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -1
- data/src/agent/Core/Controller/InternalUtils.cpp +1 -1
- data/src/agent/Core/Controller/Miscellaneous.cpp +1 -1
- data/src/agent/Core/Controller/Request.h +1 -1
- data/src/agent/Core/Controller/SendRequest.cpp +1 -1
- data/src/agent/Core/Controller/StateInspection.cpp +1 -1
- data/src/agent/Core/Controller/TurboCaching.h +1 -1
- data/src/agent/Core/Controller.h +1 -1
- data/src/agent/Core/CoreMain.cpp +1 -1
- data/src/agent/Core/OptionParser.h +1 -1
- data/src/agent/Core/ResponseCache.h +1 -1
- data/src/agent/Core/SecurityUpdateChecker.h +1 -1
- data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +1 -1
- data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +1 -1
- data/src/agent/Core/SpawningKit/Config.h +1 -1
- data/src/agent/Core/SpawningKit/Context.h +1 -1
- data/src/agent/Core/SpawningKit/DirectSpawner.h +1 -1
- data/src/agent/Core/SpawningKit/DummySpawner.h +1 -1
- data/src/agent/Core/SpawningKit/ErrorRenderer.h +1 -1
- data/src/agent/Core/SpawningKit/Exceptions.h +63 -2
- data/src/agent/Core/SpawningKit/Factory.h +1 -1
- data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
- data/src/agent/Core/SpawningKit/Handshake/Perform.h +3 -2
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
- data/src/agent/Core/SpawningKit/Handshake/Session.h +1 -1
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +1 -1
- data/src/agent/Core/SpawningKit/Journey.h +1 -1
- data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
- data/src/agent/Core/SpawningKit/README.md +3 -3
- data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +1 -1
- data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +1 -1
- data/src/agent/Core/SpawningKit/Result.h +1 -1
- data/src/agent/Core/SpawningKit/SmartSpawner.h +17 -17
- data/src/agent/Core/SpawningKit/Spawner.h +1 -1
- data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -1
- data/src/agent/Core/TelemetryCollector.h +1 -1
- data/src/agent/ExecHelper/ExecHelperMain.cpp +1 -1
- data/src/agent/FileReadHelper/FileReadHelperMain.cpp +1 -1
- data/src/agent/MainFunctions.h +1 -1
- data/src/agent/Shared/ApiAccountUtils.h +4 -3
- data/src/agent/Shared/ApiServerUtils.h +1 -2
- data/src/agent/Shared/ApplicationPoolApiKey.h +1 -1
- data/src/agent/Shared/Fundamentals/AbortHandler.cpp +1 -1
- data/src/agent/Shared/Fundamentals/AbortHandler.h +1 -1
- data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
- data/src/agent/Shared/Fundamentals/Initialization.h +1 -1
- data/src/agent/Shared/Fundamentals/Utils.cpp +1 -1
- data/src/agent/Shared/Fundamentals/Utils.h +1 -1
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +1 -1
- data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -1
- data/src/agent/TempDirToucher/TempDirToucherMain.cpp +1 -1
- data/src/agent/Watchdog/ApiServer.h +7 -6
- data/src/agent/Watchdog/Config.h +2 -2
- data/src/apache2_module/Bucket.cpp +1 -1
- data/src/apache2_module/Bucket.h +1 -1
- data/src/apache2_module/CBindings.cpp +1 -1
- data/src/apache2_module/Config.cpp +1 -1
- data/src/apache2_module/Config.h +1 -1
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +104 -104
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +1 -1
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +1 -1
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +1 -1
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +1 -1
- data/src/apache2_module/ConfigGeneral/Common.h +1 -1
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +1 -1
- data/src/apache2_module/ConfigGeneral/SetterFuncs.h +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +1 -1
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
- data/src/apache2_module/DirectoryMapper.h +1 -1
- data/src/apache2_module/Hooks.cpp +8 -2
- data/src/apache2_module/Hooks.h +1 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +1 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +1 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
- data/src/apache2_module/Utils.h +1 -1
- data/src/apache2_module/mod_passenger.c +1 -1
- data/src/cxx_supportlib/Algorithms/Hasher.cpp +1 -1
- data/src/cxx_supportlib/Algorithms/Hasher.h +1 -1
- data/src/cxx_supportlib/Algorithms/MovingAverage.h +1 -1
- data/src/cxx_supportlib/AppLocalConfigFileUtils.h +1 -1
- data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +1 -1
- data/src/cxx_supportlib/AppTypeDetector/CBindings.h +1 -1
- data/src/cxx_supportlib/AppTypeDetector/Detector.h +1 -1
- data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
- data/src/cxx_supportlib/BackgroundEventLoop.h +1 -1
- data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +1 -1
- data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
- data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
- data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +1 -1
- data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +1 -3
- data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +3 -3
- data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
- data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +1 -1
- data/src/cxx_supportlib/ConfigKit/Store.h +1 -1
- data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +1 -1
- data/src/cxx_supportlib/ConfigKit/TableTranslator.h +1 -1
- data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
- data/src/cxx_supportlib/ConfigKit/Utils.h +1 -1
- data/src/cxx_supportlib/Constants.h +2 -2
- data/src/cxx_supportlib/Constants.h.cxxcodebuilder +1 -1
- data/src/cxx_supportlib/DataStructures/HashedStaticString.h +1 -1
- data/src/cxx_supportlib/DataStructures/LString.cpp +1 -1
- data/src/cxx_supportlib/DataStructures/LString.h +1 -1
- data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
- data/src/cxx_supportlib/DataStructures/StringMap.h +1 -1
- data/src/cxx_supportlib/Exceptions.cpp +1 -1
- data/src/cxx_supportlib/Exceptions.h +1 -1
- data/src/cxx_supportlib/FileDescriptor.h +1 -1
- data/src/cxx_supportlib/FileTools/FileManip.cpp +1 -1
- data/src/cxx_supportlib/FileTools/FileManip.h +1 -1
- data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
- data/src/cxx_supportlib/FileTools/PathManip.h +1 -1
- data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +1 -1
- data/src/cxx_supportlib/FileTools/PathManipCBindings.h +1 -1
- data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +1 -1
- data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +1 -1
- data/src/cxx_supportlib/Hooks.h +1 -1
- data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
- data/src/cxx_supportlib/IOTools/IOUtils.cpp +10 -10
- data/src/cxx_supportlib/IOTools/IOUtils.h +1 -1
- data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
- data/src/cxx_supportlib/IOTools/MessageSerialization.h +1 -1
- data/src/cxx_supportlib/InstanceDirectory.h +1 -1
- data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +1 -1
- data/src/cxx_supportlib/JsonTools/Autocast.h +1 -1
- data/src/cxx_supportlib/JsonTools/CBindings.cpp +1 -1
- data/src/cxx_supportlib/JsonTools/CBindings.h +1 -1
- data/src/cxx_supportlib/JsonTools/JsonUtils.h +1 -1
- data/src/cxx_supportlib/LoggingKit/Assert.h +1 -1
- data/src/cxx_supportlib/LoggingKit/Config.h +2 -1
- data/src/cxx_supportlib/LoggingKit/Context.h +1 -1
- data/src/cxx_supportlib/LoggingKit/Forward.h +1 -1
- data/src/cxx_supportlib/LoggingKit/Implementation.cpp +11 -1
- data/src/cxx_supportlib/LoggingKit/Logging.h +1 -1
- data/src/cxx_supportlib/LoggingKit/LoggingKit.h +1 -1
- data/src/cxx_supportlib/LveLoggingDecorator.h +1 -1
- data/src/cxx_supportlib/MemoryKit/mbuf.cpp +1 -1
- data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
- data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
- data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
- data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +1 -1
- data/src/cxx_supportlib/ProcessManagement/Ruby.h +1 -1
- data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +1 -1
- data/src/cxx_supportlib/ProcessManagement/Spawn.h +1 -1
- data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
- data/src/cxx_supportlib/ProcessManagement/Utils.h +1 -1
- data/src/cxx_supportlib/RandomGenerator.h +1 -1
- data/src/cxx_supportlib/ResourceLocator.h +1 -1
- data/src/cxx_supportlib/SafeLibev.h +1 -1
- data/src/cxx_supportlib/SecurityKit/Crypto.cpp +9 -27
- data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -2
- data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +1 -1
- data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -1
- data/src/cxx_supportlib/ServerKit/Channel.h +1 -1
- data/src/cxx_supportlib/ServerKit/Client.h +1 -1
- data/src/cxx_supportlib/ServerKit/ClientRef.h +1 -1
- data/src/cxx_supportlib/ServerKit/Config.h +1 -1
- data/src/cxx_supportlib/ServerKit/Context.h +1 -1
- data/src/cxx_supportlib/ServerKit/CookieUtils.h +1 -1
- data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
- data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +1 -1
- data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +1 -1
- data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +54 -2
- data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +1 -1
- data/src/cxx_supportlib/ServerKit/HeaderTable.h +1 -1
- data/src/cxx_supportlib/ServerKit/Hooks.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpClient.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpServer.h +1 -1
- data/src/cxx_supportlib/ServerKit/Implementation.cpp +1 -1
- data/src/cxx_supportlib/ServerKit/Server.h +4 -2
- data/src/cxx_supportlib/StaticString.h +1 -1
- data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
- data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +1 -1
- data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +1 -1
- data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +1 -1
- data/src/cxx_supportlib/StrIntTools/StringScanning.h +1 -1
- data/src/cxx_supportlib/StrIntTools/Template.h +1 -1
- data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +1 -1
- data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
- data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +1 -1
- data/src/cxx_supportlib/SystemTools/SystemTime.cpp +1 -1
- data/src/cxx_supportlib/SystemTools/SystemTime.h +1 -1
- data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +1 -1
- data/src/cxx_supportlib/SystemTools/UserDatabase.h +1 -1
- data/src/cxx_supportlib/Utils/AnsiColorConstants.h +1 -1
- data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +1 -1
- data/src/cxx_supportlib/Utils/BlockingQueue.h +1 -1
- data/src/cxx_supportlib/Utils/CachedFileStat.cpp +1 -1
- data/src/cxx_supportlib/Utils/CachedFileStat.h +1 -1
- data/src/cxx_supportlib/Utils/CachedFileStat.hpp +1 -1
- data/src/cxx_supportlib/Utils/ClassUtils.h +1 -1
- data/src/cxx_supportlib/Utils/Curl.h +1 -1
- data/src/cxx_supportlib/Utils/FastStringStream.h +1 -1
- data/src/cxx_supportlib/Utils/FileChangeChecker.h +1 -1
- data/src/cxx_supportlib/Utils/HttpConstants.h +1 -1
- data/src/cxx_supportlib/Utils/IniFile.h +1 -1
- data/src/cxx_supportlib/Utils/MessagePassing.h +1 -1
- data/src/cxx_supportlib/Utils/OptionParsing.h +1 -1
- data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +1 -1
- data/src/cxx_supportlib/Utils/ScopeGuard.h +1 -1
- data/src/cxx_supportlib/Utils/SpeedMeter.h +1 -1
- data/src/cxx_supportlib/Utils/Timer.h +1 -1
- data/src/cxx_supportlib/Utils/VariantMap.h +1 -1
- data/src/cxx_supportlib/Utils.cpp +1 -1
- data/src/cxx_supportlib/Utils.h +1 -1
- data/src/cxx_supportlib/WatchdogLauncher.cpp +1 -1
- data/src/cxx_supportlib/WatchdogLauncher.h +1 -1
- data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +1 -1
- data/src/cxx_supportlib/WrapperRegistry/CBindings.h +1 -1
- data/src/cxx_supportlib/WrapperRegistry/Entry.h +1 -1
- data/src/cxx_supportlib/WrapperRegistry/Registry.h +1 -1
- data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
- data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
- data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
- data/src/cxx_supportlib/oxt/implementation.cpp +1 -1
- data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
- data/src/cxx_supportlib/oxt/macros.hpp +1 -1
- data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
- data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
- data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
- data/src/cxx_supportlib/oxt/thread.hpp +1 -1
- data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +1 -1
- data/src/cxx_supportlib/vendor-copy/libuv/AUTHORS +353 -3
- data/src/cxx_supportlib/vendor-copy/libuv/ChangeLog +3981 -2
- data/src/cxx_supportlib/vendor-copy/libuv/LICENSE +1 -28
- data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-docs +396 -0
- data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-extra +36 -0
- data/src/cxx_supportlib/vendor-copy/libuv/Makefile.am +275 -58
- data/src/cxx_supportlib/vendor-copy/libuv/Makefile.in +4380 -2125
- data/src/cxx_supportlib/vendor-copy/libuv/aclocal.m4 +425 -221
- data/src/cxx_supportlib/vendor-copy/libuv/ar-lib +30 -10
- data/src/cxx_supportlib/vendor-copy/libuv/compile +31 -14
- data/src/cxx_supportlib/vendor-copy/libuv/config.guess +1084 -690
- data/src/cxx_supportlib/vendor-copy/libuv/config.sub +1844 -1297
- data/src/cxx_supportlib/vendor-copy/libuv/configure +6935 -3664
- data/src/cxx_supportlib/vendor-copy/libuv/configure.ac +43 -19
- data/src/cxx_supportlib/vendor-copy/libuv/depcomp +12 -11
- data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-darwin.h → uv/darwin.h} +3 -3
- data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-errno.h → uv/errno.h} +119 -60
- data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-linux.h → uv/linux.h} +1 -1
- data/src/cxx_supportlib/vendor-copy/libuv/include/uv/os390.h +33 -0
- data/src/cxx_supportlib/vendor-copy/libuv/include/uv/posix.h +31 -0
- data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-threadpool.h → uv/threadpool.h} +1 -1
- data/src/cxx_supportlib/vendor-copy/libuv/include/{tree.h → uv/tree.h} +3 -250
- data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-unix.h → uv/unix.h} +186 -60
- data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-version.h → uv/version.h} +3 -3
- data/src/cxx_supportlib/vendor-copy/libuv/include/uv/win.h +703 -0
- data/src/cxx_supportlib/vendor-copy/libuv/include/uv.h +528 -40
- data/src/cxx_supportlib/vendor-copy/libuv/install-sh +110 -70
- data/src/cxx_supportlib/vendor-copy/libuv/libuv-static.pc.in +12 -0
- data/src/cxx_supportlib/vendor-copy/libuv/libuv.pc.in +4 -2
- data/src/cxx_supportlib/vendor-copy/libuv/ltmain.sh +995 -619
- data/src/cxx_supportlib/vendor-copy/libuv/m4/ax_pthread.m4 +485 -0
- data/src/cxx_supportlib/vendor-copy/libuv/m4/libtool.m4 +438 -289
- data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-flags.m4 +21 -4
- data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-versions.m4 +7 -0
- data/src/cxx_supportlib/vendor-copy/libuv/m4/ltoptions.m4 +69 -39
- data/src/cxx_supportlib/vendor-copy/libuv/m4/ltsugar.m4 +1 -1
- data/src/cxx_supportlib/vendor-copy/libuv/m4/ltversion.m4 +7 -6
- data/src/cxx_supportlib/vendor-copy/libuv/m4/lt~obsolete.m4 +2 -2
- data/src/cxx_supportlib/vendor-copy/libuv/missing +55 -34
- data/src/cxx_supportlib/vendor-copy/libuv/src/fs-poll.c +52 -20
- data/src/cxx_supportlib/vendor-copy/libuv/src/idna.c +560 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/idna.h +31 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/inet.c +5 -16
- data/src/cxx_supportlib/vendor-copy/libuv/src/queue.h +68 -86
- data/src/cxx_supportlib/vendor-copy/libuv/src/random.c +123 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.c +38 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.h +39 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.c +52 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.h +27 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/thread-common.c +175 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/threadpool.c +172 -57
- data/src/cxx_supportlib/vendor-copy/libuv/src/{unix/timer.c → timer.c} +57 -29
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix-common.c +89 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix.c +418 -256
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/async.c +168 -129
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-ifaddrs.c +163 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-proctitle.c +99 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/core.c +1312 -378
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/cygwin.c +93 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-proctitle.c +18 -32
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-stub.h +97 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-syscalls.h +17 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin.c +41 -139
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/dl.c +1 -1
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/freebsd.c +75 -235
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fs.c +1308 -299
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fsevents.c +150 -148
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getaddrinfo.c +58 -8
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getnameinfo.c +3 -2
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/haiku.c +172 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/hurd.c +172 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/ibmi.c +542 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/internal.h +297 -106
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/kqueue.c +325 -94
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux.c +2708 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop-watcher.c +11 -11
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop.c +105 -24
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/netbsd.c +51 -157
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-fsevents.c +42 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-proctitle.c +45 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/openbsd.c +42 -183
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-proctitle.c +136 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.c +536 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.h +75 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390.c +1070 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pipe.c +324 -55
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/poll.c +58 -11
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-hrtime.c +36 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-poll.c +385 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/process.c +795 -248
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/procfs-exepath.c +45 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/proctitle.c +77 -22
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/qnx.c +142 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-devurandom.c +93 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getentropy.c +57 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getrandom.c +86 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-sysctl-linux.c +99 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/signal.c +147 -39
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/stream.c +426 -474
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sunos.c +240 -98
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-loadavg.c +36 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-memory.c +42 -0
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tcp.c +402 -91
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/thread.c +497 -145
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tty.c +269 -45
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/udp.c +695 -165
- data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.c +463 -61
- data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.h +248 -44
- data/src/cxx_supportlib/vendor-copy/libuv/src/uv-data-getter-setters.c +119 -0
- data/src/cxx_supportlib/vendor-copy/libuv/tsansupp.txt +2 -0
- data/src/cxx_supportlib/vendor-modified/libev/Changes +109 -0
- data/src/cxx_supportlib/vendor-modified/libev/Makefile.am +2 -1
- data/src/cxx_supportlib/vendor-modified/libev/Makefile.in +47 -33
- data/src/cxx_supportlib/vendor-modified/libev/README +2 -1
- data/src/cxx_supportlib/vendor-modified/libev/aclocal.m4 +1653 -1224
- data/src/cxx_supportlib/vendor-modified/libev/config.guess +376 -316
- data/src/cxx_supportlib/vendor-modified/libev/config.h.in +13 -2
- data/src/cxx_supportlib/vendor-modified/libev/config.sub +156 -154
- data/src/cxx_supportlib/vendor-modified/libev/configure +1431 -940
- data/src/cxx_supportlib/vendor-modified/libev/configure.ac +3 -3
- data/src/cxx_supportlib/vendor-modified/libev/depcomp +5 -5
- data/src/cxx_supportlib/vendor-modified/libev/ev++.h +109 -107
- data/src/cxx_supportlib/vendor-modified/libev/ev.c +807 -319
- data/src/cxx_supportlib/vendor-modified/libev/ev.h +111 -105
- data/src/cxx_supportlib/vendor-modified/libev/ev_epoll.c +42 -29
- data/src/cxx_supportlib/vendor-modified/libev/ev_iouring.c +694 -0
- data/src/cxx_supportlib/vendor-modified/libev/ev_kqueue.c +15 -9
- data/src/cxx_supportlib/vendor-modified/libev/ev_linuxaio.c +620 -0
- data/src/cxx_supportlib/vendor-modified/libev/ev_poll.c +19 -14
- data/src/cxx_supportlib/vendor-modified/libev/ev_port.c +8 -5
- data/src/cxx_supportlib/vendor-modified/libev/ev_select.c +6 -6
- data/src/cxx_supportlib/vendor-modified/libev/ev_vars.h +48 -3
- data/src/cxx_supportlib/vendor-modified/libev/ev_win32.c +2 -2
- data/src/cxx_supportlib/vendor-modified/libev/ev_wrap.h +72 -0
- data/src/cxx_supportlib/vendor-modified/libev/install-sh +23 -13
- data/src/cxx_supportlib/vendor-modified/libev/libev.m4 +6 -1
- data/src/cxx_supportlib/vendor-modified/libev/ltmain.sh +3581 -1993
- data/src/cxx_supportlib/vendor-modified/libev/missing +8 -8
- data/src/cxx_supportlib/vendor-modified/libev/mkinstalldirs +3 -3
- data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +1 -1
- data/src/helper-scripts/backtrace-sanitizer.rb +1 -1
- data/src/helper-scripts/crash-watch.rb +1 -1
- data/src/helper-scripts/download_binaries/extconf.rb +1 -1
- data/src/helper-scripts/meteor-loader.rb +1 -1
- data/src/helper-scripts/node-loader.js +1 -1
- data/src/helper-scripts/prespawn +1 -1
- data/src/helper-scripts/rack-loader.rb +1 -1
- data/src/helper-scripts/rack-preloader.rb +1 -1
- data/src/helper-scripts/wsgi-loader.py +1 -1
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +1 -1
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +1 -1
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +1 -1
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +1 -1
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +1 -1
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +1 -1
- data/src/nginx_module/Configuration.c +1 -1
- data/src/nginx_module/Configuration.h +1 -1
- data/src/nginx_module/ContentHandler.c +1 -1
- data/src/nginx_module/ContentHandler.h +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +1 -1
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +1 -1
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +1 -1
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
- data/src/nginx_module/StaticContentHandler.c +1 -1
- data/src/nginx_module/StaticContentHandler.h +1 -1
- data/src/nginx_module/ngx_http_passenger_module.c +1 -1
- data/src/nginx_module/ngx_http_passenger_module.h +1 -1
- data/src/nodejs_supportlib/phusion_passenger/line_reader.js +1 -1
- data/src/ruby_native_extension/extconf.rb +1 -1
- data/src/ruby_native_extension/passenger_native_support.c +1 -1
- data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -12
- data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +8 -10
- data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/main.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +3 -2
- data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +6 -1
- data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/message_channel.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/message_client.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/native_support.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +4 -3
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +195 -11
- data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/plugin.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/public_api.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -7
- data/src/ruby_supportlib/phusion_passenger/request_handler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +4 -8
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/download.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +3 -13
- data/src/ruby_supportlib/phusion_passenger/utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +8 -6
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +4 -3
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +6 -4
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +395 -579
- data/src/ruby_supportlib/phusion_passenger.rb +8 -8
- data/src/schema_printer/SchemaPrinterMain.cpp +1 -1
- data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +1 -1
- metadata +69 -32
- data/doc/DeveloperQuickstart.md +0 -70
- data/src/README.md +0 -7
- data/src/cxx_supportlib/vendor-copy/libuv/README.md +0 -245
- data/src/cxx_supportlib/vendor-copy/libuv/checksparse.sh +0 -234
- data/src/cxx_supportlib/vendor-copy/libuv/common.gypi +0 -210
- data/src/cxx_supportlib/vendor-copy/libuv/gyp_uv.py +0 -93
- data/src/cxx_supportlib/vendor-copy/libuv/include/android-ifaddrs.h +0 -54
- data/src/cxx_supportlib/vendor-copy/libuv/include/pthread-fixes.h +0 -72
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/android-ifaddrs.c +0 -703
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/atomic-ops.h +0 -77
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-core.c +0 -899
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-inotify.c +0 -285
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.c +0 -471
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.h +0 -158
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pthread-fixes.c +0 -104
- data/src/cxx_supportlib/vendor-copy/libuv/src/unix/spinlock.h +0 -53
- data/src/cxx_supportlib/vendor-copy/libuv/uv.gyp +0 -508
- /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-aix.h → uv/aix.h} +0 -0
- /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-bsd.h → uv/bsd.h} +0 -0
- /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-sunos.h → uv/sunos.h} +0 -0
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
#endif
|
|
34
34
|
#include <net/if.h>
|
|
35
35
|
#include <net/if_dl.h>
|
|
36
|
+
#include <net/if_arp.h>
|
|
37
|
+
#include <sys/sockio.h>
|
|
36
38
|
|
|
37
39
|
#include <sys/loadavg.h>
|
|
38
40
|
#include <sys/time.h>
|
|
@@ -71,7 +73,7 @@ int uv__platform_loop_init(uv_loop_t* loop) {
|
|
|
71
73
|
|
|
72
74
|
fd = port_create();
|
|
73
75
|
if (fd == -1)
|
|
74
|
-
return
|
|
76
|
+
return UV__ERR(errno);
|
|
75
77
|
|
|
76
78
|
err = uv__cloexec(fd, 1);
|
|
77
79
|
if (err) {
|
|
@@ -97,12 +99,25 @@ void uv__platform_loop_delete(uv_loop_t* loop) {
|
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
|
|
102
|
+
int uv__io_fork(uv_loop_t* loop) {
|
|
103
|
+
#if defined(PORT_SOURCE_FILE)
|
|
104
|
+
if (loop->fs_fd != -1) {
|
|
105
|
+
/* stop the watcher before we blow away its fileno */
|
|
106
|
+
uv__io_stop(loop, &loop->fs_event_watcher, POLLIN);
|
|
107
|
+
}
|
|
108
|
+
#endif
|
|
109
|
+
uv__platform_loop_delete(loop);
|
|
110
|
+
return uv__platform_loop_init(loop);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
100
114
|
void uv__platform_invalidate_fd(uv_loop_t* loop, int fd) {
|
|
101
115
|
struct port_event* events;
|
|
102
116
|
uintptr_t i;
|
|
103
117
|
uintptr_t nfds;
|
|
104
118
|
|
|
105
119
|
assert(loop->watchers != NULL);
|
|
120
|
+
assert(fd >= 0);
|
|
106
121
|
|
|
107
122
|
events = (struct port_event*) loop->watchers[loop->nwatchers];
|
|
108
123
|
nfds = (uintptr_t) loop->watchers[loop->nwatchers + 1];
|
|
@@ -116,11 +131,24 @@ void uv__platform_invalidate_fd(uv_loop_t* loop, int fd) {
|
|
|
116
131
|
}
|
|
117
132
|
|
|
118
133
|
|
|
134
|
+
int uv__io_check_fd(uv_loop_t* loop, int fd) {
|
|
135
|
+
if (port_associate(loop->backend_fd, PORT_SOURCE_FD, fd, POLLIN, 0))
|
|
136
|
+
return UV__ERR(errno);
|
|
137
|
+
|
|
138
|
+
if (port_dissociate(loop->backend_fd, PORT_SOURCE_FD, fd)) {
|
|
139
|
+
perror("(libuv) port_dissociate()");
|
|
140
|
+
abort();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
|
|
119
147
|
void uv__io_poll(uv_loop_t* loop, int timeout) {
|
|
120
148
|
struct port_event events[1024];
|
|
121
149
|
struct port_event* pe;
|
|
122
150
|
struct timespec spec;
|
|
123
|
-
|
|
151
|
+
struct uv__queue* q;
|
|
124
152
|
uv__io_t* w;
|
|
125
153
|
sigset_t* pset;
|
|
126
154
|
sigset_t set;
|
|
@@ -129,26 +157,35 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
|
|
129
157
|
unsigned int nfds;
|
|
130
158
|
unsigned int i;
|
|
131
159
|
int saved_errno;
|
|
160
|
+
int have_signals;
|
|
132
161
|
int nevents;
|
|
133
162
|
int count;
|
|
134
163
|
int err;
|
|
135
164
|
int fd;
|
|
165
|
+
int user_timeout;
|
|
166
|
+
int reset_timeout;
|
|
136
167
|
|
|
137
168
|
if (loop->nfds == 0) {
|
|
138
|
-
assert(
|
|
169
|
+
assert(uv__queue_empty(&loop->watcher_queue));
|
|
139
170
|
return;
|
|
140
171
|
}
|
|
141
172
|
|
|
142
|
-
while (!
|
|
143
|
-
q =
|
|
144
|
-
|
|
145
|
-
|
|
173
|
+
while (!uv__queue_empty(&loop->watcher_queue)) {
|
|
174
|
+
q = uv__queue_head(&loop->watcher_queue);
|
|
175
|
+
uv__queue_remove(q);
|
|
176
|
+
uv__queue_init(q);
|
|
146
177
|
|
|
147
|
-
w =
|
|
178
|
+
w = uv__queue_data(q, uv__io_t, watcher_queue);
|
|
148
179
|
assert(w->pevents != 0);
|
|
149
180
|
|
|
150
|
-
if (port_associate(loop->backend_fd,
|
|
181
|
+
if (port_associate(loop->backend_fd,
|
|
182
|
+
PORT_SOURCE_FD,
|
|
183
|
+
w->fd,
|
|
184
|
+
w->pevents,
|
|
185
|
+
0)) {
|
|
186
|
+
perror("(libuv) port_associate()");
|
|
151
187
|
abort();
|
|
188
|
+
}
|
|
152
189
|
|
|
153
190
|
w->events = w->pevents;
|
|
154
191
|
}
|
|
@@ -164,7 +201,21 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
|
|
164
201
|
base = loop->time;
|
|
165
202
|
count = 48; /* Benchmarks suggest this gives the best throughput. */
|
|
166
203
|
|
|
204
|
+
if (uv__get_internal_fields(loop)->flags & UV_METRICS_IDLE_TIME) {
|
|
205
|
+
reset_timeout = 1;
|
|
206
|
+
user_timeout = timeout;
|
|
207
|
+
timeout = 0;
|
|
208
|
+
} else {
|
|
209
|
+
reset_timeout = 0;
|
|
210
|
+
}
|
|
211
|
+
|
|
167
212
|
for (;;) {
|
|
213
|
+
/* Only need to set the provider_entry_time if timeout != 0. The function
|
|
214
|
+
* will return early if the loop isn't configured with UV_METRICS_IDLE_TIME.
|
|
215
|
+
*/
|
|
216
|
+
if (timeout != 0)
|
|
217
|
+
uv__metrics_set_provider_entry_time(loop);
|
|
218
|
+
|
|
168
219
|
if (timeout != -1) {
|
|
169
220
|
spec.tv_sec = timeout / 1000;
|
|
170
221
|
spec.tv_nsec = (timeout % 1000) * 1000000;
|
|
@@ -192,10 +243,12 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
|
|
192
243
|
/* Work around another kernel bug: port_getn() may return events even
|
|
193
244
|
* on error.
|
|
194
245
|
*/
|
|
195
|
-
if (errno == EINTR || errno == ETIME)
|
|
246
|
+
if (errno == EINTR || errno == ETIME) {
|
|
196
247
|
saved_errno = errno;
|
|
197
|
-
else
|
|
248
|
+
} else {
|
|
249
|
+
perror("(libuv) port_getn()");
|
|
198
250
|
abort();
|
|
251
|
+
}
|
|
199
252
|
}
|
|
200
253
|
|
|
201
254
|
/* Update loop->time unconditionally. It's tempting to skip the update when
|
|
@@ -205,6 +258,11 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
|
|
205
258
|
SAVE_ERRNO(uv__update_time(loop));
|
|
206
259
|
|
|
207
260
|
if (events[0].portev_source == 0) {
|
|
261
|
+
if (reset_timeout != 0) {
|
|
262
|
+
timeout = user_timeout;
|
|
263
|
+
reset_timeout = 0;
|
|
264
|
+
}
|
|
265
|
+
|
|
208
266
|
if (timeout == 0)
|
|
209
267
|
return;
|
|
210
268
|
|
|
@@ -219,6 +277,7 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
|
|
219
277
|
return;
|
|
220
278
|
}
|
|
221
279
|
|
|
280
|
+
have_signals = 0;
|
|
222
281
|
nevents = 0;
|
|
223
282
|
|
|
224
283
|
assert(loop->watchers != NULL);
|
|
@@ -241,19 +300,44 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
|
|
241
300
|
if (w == NULL)
|
|
242
301
|
continue;
|
|
243
302
|
|
|
244
|
-
|
|
303
|
+
/* Run signal watchers last. This also affects child process watchers
|
|
304
|
+
* because those are implemented in terms of signal watchers.
|
|
305
|
+
*/
|
|
306
|
+
if (w == &loop->signal_io_watcher) {
|
|
307
|
+
have_signals = 1;
|
|
308
|
+
} else {
|
|
309
|
+
uv__metrics_update_idle_time(loop);
|
|
310
|
+
w->cb(loop, w, pe->portev_events);
|
|
311
|
+
}
|
|
312
|
+
|
|
245
313
|
nevents++;
|
|
246
314
|
|
|
247
315
|
if (w != loop->watchers[fd])
|
|
248
316
|
continue; /* Disabled by callback. */
|
|
249
317
|
|
|
250
318
|
/* Events Ports operates in oneshot mode, rearm timer on next run. */
|
|
251
|
-
if (w->pevents != 0 &&
|
|
252
|
-
|
|
319
|
+
if (w->pevents != 0 && uv__queue_empty(&w->watcher_queue))
|
|
320
|
+
uv__queue_insert_tail(&loop->watcher_queue, &w->watcher_queue);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
uv__metrics_inc_events(loop, nevents);
|
|
324
|
+
if (reset_timeout != 0) {
|
|
325
|
+
timeout = user_timeout;
|
|
326
|
+
reset_timeout = 0;
|
|
327
|
+
uv__metrics_inc_events_waiting(loop, nevents);
|
|
253
328
|
}
|
|
329
|
+
|
|
330
|
+
if (have_signals != 0) {
|
|
331
|
+
uv__metrics_update_idle_time(loop);
|
|
332
|
+
loop->signal_io_watcher.cb(loop, &loop->signal_io_watcher, POLLIN);
|
|
333
|
+
}
|
|
334
|
+
|
|
254
335
|
loop->watchers[loop->nwatchers] = NULL;
|
|
255
336
|
loop->watchers[loop->nwatchers + 1] = NULL;
|
|
256
337
|
|
|
338
|
+
if (have_signals != 0)
|
|
339
|
+
return; /* Event loop should cycle now so don't poll again. */
|
|
340
|
+
|
|
257
341
|
if (nevents != 0) {
|
|
258
342
|
if (nfds == ARRAY_SIZE(events) && --count != 0) {
|
|
259
343
|
/* Poll for more events but don't block this time. */
|
|
@@ -301,7 +385,7 @@ int uv_exepath(char* buffer, size_t* size) {
|
|
|
301
385
|
char buf[128];
|
|
302
386
|
|
|
303
387
|
if (buffer == NULL || size == NULL || *size == 0)
|
|
304
|
-
return
|
|
388
|
+
return UV_EINVAL;
|
|
305
389
|
|
|
306
390
|
snprintf(buf, sizeof(buf), "/proc/%lu/path/a.out", (unsigned long) getpid());
|
|
307
391
|
|
|
@@ -310,7 +394,7 @@ int uv_exepath(char* buffer, size_t* size) {
|
|
|
310
394
|
res = readlink(buf, buffer, res);
|
|
311
395
|
|
|
312
396
|
if (res == -1)
|
|
313
|
-
return
|
|
397
|
+
return UV__ERR(errno);
|
|
314
398
|
|
|
315
399
|
buffer[res] = '\0';
|
|
316
400
|
*size = res;
|
|
@@ -328,6 +412,16 @@ uint64_t uv_get_total_memory(void) {
|
|
|
328
412
|
}
|
|
329
413
|
|
|
330
414
|
|
|
415
|
+
uint64_t uv_get_constrained_memory(void) {
|
|
416
|
+
return 0; /* Memory constraints are unknown. */
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
uint64_t uv_get_available_memory(void) {
|
|
421
|
+
return uv_get_free_memory();
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
|
|
331
425
|
void uv_loadavg(double avg[3]) {
|
|
332
426
|
(void) getloadavg(avg, 3);
|
|
333
427
|
}
|
|
@@ -336,15 +430,15 @@ void uv_loadavg(double avg[3]) {
|
|
|
336
430
|
#if defined(PORT_SOURCE_FILE)
|
|
337
431
|
|
|
338
432
|
static int uv__fs_event_rearm(uv_fs_event_t *handle) {
|
|
339
|
-
if (handle->fd ==
|
|
340
|
-
return
|
|
433
|
+
if (handle->fd == PORT_DELETED)
|
|
434
|
+
return UV_EBADF;
|
|
341
435
|
|
|
342
436
|
if (port_associate(handle->loop->fs_fd,
|
|
343
437
|
PORT_SOURCE_FILE,
|
|
344
438
|
(uintptr_t) &handle->fo,
|
|
345
439
|
FILE_ATTRIB | FILE_MODIFIED,
|
|
346
440
|
handle) == -1) {
|
|
347
|
-
return
|
|
441
|
+
return UV__ERR(errno);
|
|
348
442
|
}
|
|
349
443
|
handle->fd = PORT_LOADED;
|
|
350
444
|
|
|
@@ -387,6 +481,12 @@ static void uv__fs_event_read(uv_loop_t* loop,
|
|
|
387
481
|
handle = (uv_fs_event_t*) pe.portev_user;
|
|
388
482
|
assert((r == 0) && "unexpected port_get() error");
|
|
389
483
|
|
|
484
|
+
if (uv__is_closing(handle)) {
|
|
485
|
+
uv__handle_stop(handle);
|
|
486
|
+
uv__make_close_pending((uv_handle_t*) handle);
|
|
487
|
+
break;
|
|
488
|
+
}
|
|
489
|
+
|
|
390
490
|
events = 0;
|
|
391
491
|
if (pe.portev_events & (FILE_ATTRIB | FILE_MODIFIED))
|
|
392
492
|
events |= UV_CHANGE;
|
|
@@ -421,13 +521,13 @@ int uv_fs_event_start(uv_fs_event_t* handle,
|
|
|
421
521
|
int err;
|
|
422
522
|
|
|
423
523
|
if (uv__is_active(handle))
|
|
424
|
-
return
|
|
524
|
+
return UV_EINVAL;
|
|
425
525
|
|
|
426
526
|
first_run = 0;
|
|
427
527
|
if (handle->loop->fs_fd == -1) {
|
|
428
528
|
portfd = port_create();
|
|
429
529
|
if (portfd == -1)
|
|
430
|
-
return
|
|
530
|
+
return UV__ERR(errno);
|
|
431
531
|
handle->loop->fs_fd = portfd;
|
|
432
532
|
first_run = 1;
|
|
433
533
|
}
|
|
@@ -440,24 +540,28 @@ int uv_fs_event_start(uv_fs_event_t* handle,
|
|
|
440
540
|
memset(&handle->fo, 0, sizeof handle->fo);
|
|
441
541
|
handle->fo.fo_name = handle->path;
|
|
442
542
|
err = uv__fs_event_rearm(handle);
|
|
443
|
-
if (err != 0)
|
|
543
|
+
if (err != 0) {
|
|
544
|
+
uv_fs_event_stop(handle);
|
|
444
545
|
return err;
|
|
546
|
+
}
|
|
445
547
|
|
|
446
548
|
if (first_run) {
|
|
447
549
|
uv__io_init(&handle->loop->fs_event_watcher, uv__fs_event_read, portfd);
|
|
448
|
-
uv__io_start(handle->loop, &handle->loop->fs_event_watcher,
|
|
550
|
+
uv__io_start(handle->loop, &handle->loop->fs_event_watcher, POLLIN);
|
|
449
551
|
}
|
|
450
552
|
|
|
451
553
|
return 0;
|
|
452
554
|
}
|
|
453
555
|
|
|
454
556
|
|
|
455
|
-
int
|
|
557
|
+
static int uv__fs_event_stop(uv_fs_event_t* handle) {
|
|
558
|
+
int ret = 0;
|
|
559
|
+
|
|
456
560
|
if (!uv__is_active(handle))
|
|
457
561
|
return 0;
|
|
458
562
|
|
|
459
|
-
if (handle->fd ==
|
|
460
|
-
port_dissociate(handle->loop->fs_fd,
|
|
563
|
+
if (handle->fd == PORT_LOADED) {
|
|
564
|
+
ret = port_dissociate(handle->loop->fs_fd,
|
|
461
565
|
PORT_SOURCE_FILE,
|
|
462
566
|
(uintptr_t) &handle->fo);
|
|
463
567
|
}
|
|
@@ -466,19 +570,34 @@ int uv_fs_event_stop(uv_fs_event_t* handle) {
|
|
|
466
570
|
uv__free(handle->path);
|
|
467
571
|
handle->path = NULL;
|
|
468
572
|
handle->fo.fo_name = NULL;
|
|
469
|
-
|
|
573
|
+
if (ret == 0)
|
|
574
|
+
uv__handle_stop(handle);
|
|
575
|
+
|
|
576
|
+
return ret;
|
|
577
|
+
}
|
|
470
578
|
|
|
579
|
+
int uv_fs_event_stop(uv_fs_event_t* handle) {
|
|
580
|
+
(void) uv__fs_event_stop(handle);
|
|
471
581
|
return 0;
|
|
472
582
|
}
|
|
473
583
|
|
|
474
584
|
void uv__fs_event_close(uv_fs_event_t* handle) {
|
|
475
|
-
|
|
585
|
+
/*
|
|
586
|
+
* If we were unable to dissociate the port here, then it is most likely
|
|
587
|
+
* that there is a pending queued event. When this happens, we don't want
|
|
588
|
+
* to complete the close as it will free the underlying memory for the
|
|
589
|
+
* handle, causing a use-after-free problem when the event is processed.
|
|
590
|
+
* We defer the final cleanup until after the event is consumed in
|
|
591
|
+
* uv__fs_event_read().
|
|
592
|
+
*/
|
|
593
|
+
if (uv__fs_event_stop(handle) == 0)
|
|
594
|
+
uv__make_close_pending((uv_handle_t*) handle);
|
|
476
595
|
}
|
|
477
596
|
|
|
478
597
|
#else /* !defined(PORT_SOURCE_FILE) */
|
|
479
598
|
|
|
480
599
|
int uv_fs_event_init(uv_loop_t* loop, uv_fs_event_t* handle) {
|
|
481
|
-
return
|
|
600
|
+
return UV_ENOSYS;
|
|
482
601
|
}
|
|
483
602
|
|
|
484
603
|
|
|
@@ -486,12 +605,12 @@ int uv_fs_event_start(uv_fs_event_t* handle,
|
|
|
486
605
|
uv_fs_event_cb cb,
|
|
487
606
|
const char* filename,
|
|
488
607
|
unsigned int flags) {
|
|
489
|
-
return
|
|
608
|
+
return UV_ENOSYS;
|
|
490
609
|
}
|
|
491
610
|
|
|
492
611
|
|
|
493
612
|
int uv_fs_event_stop(uv_fs_event_t* handle) {
|
|
494
|
-
return
|
|
613
|
+
return UV_ENOSYS;
|
|
495
614
|
}
|
|
496
615
|
|
|
497
616
|
|
|
@@ -502,24 +621,6 @@ void uv__fs_event_close(uv_fs_event_t* handle) {
|
|
|
502
621
|
#endif /* defined(PORT_SOURCE_FILE) */
|
|
503
622
|
|
|
504
623
|
|
|
505
|
-
char** uv_setup_args(int argc, char** argv) {
|
|
506
|
-
return argv;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
int uv_set_process_title(const char* title) {
|
|
511
|
-
return 0;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
int uv_get_process_title(char* buffer, size_t size) {
|
|
516
|
-
if (size > 0) {
|
|
517
|
-
buffer[0] = '\0';
|
|
518
|
-
}
|
|
519
|
-
return 0;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
|
|
523
624
|
int uv_resident_set_memory(size_t* rss) {
|
|
524
625
|
psinfo_t psinfo;
|
|
525
626
|
int err;
|
|
@@ -527,10 +628,10 @@ int uv_resident_set_memory(size_t* rss) {
|
|
|
527
628
|
|
|
528
629
|
fd = open("/proc/self/psinfo", O_RDONLY);
|
|
529
630
|
if (fd == -1)
|
|
530
|
-
return
|
|
631
|
+
return UV__ERR(errno);
|
|
531
632
|
|
|
532
633
|
/* FIXME(bnoordhuis) Handle EINTR. */
|
|
533
|
-
err =
|
|
634
|
+
err = UV_EINVAL;
|
|
534
635
|
if (read(fd, &psinfo, sizeof(psinfo)) == sizeof(psinfo)) {
|
|
535
636
|
*rss = (size_t)psinfo.pr_rssize * 1024;
|
|
536
637
|
err = 0;
|
|
@@ -550,7 +651,7 @@ int uv_uptime(double* uptime) {
|
|
|
550
651
|
|
|
551
652
|
kc = kstat_open();
|
|
552
653
|
if (kc == NULL)
|
|
553
|
-
return
|
|
654
|
+
return UV_EPERM;
|
|
554
655
|
|
|
555
656
|
ksp = kstat_lookup(kc, (char*) "unix", 0, (char*) "system_misc");
|
|
556
657
|
if (kstat_read(kc, ksp, NULL) == -1) {
|
|
@@ -574,7 +675,7 @@ int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
|
|
|
574
675
|
|
|
575
676
|
kc = kstat_open();
|
|
576
677
|
if (kc == NULL)
|
|
577
|
-
return
|
|
678
|
+
return UV_EPERM;
|
|
578
679
|
|
|
579
680
|
/* Get count of cpus */
|
|
580
681
|
lookup_instance = 0;
|
|
@@ -585,7 +686,7 @@ int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
|
|
|
585
686
|
*cpu_infos = uv__malloc(lookup_instance * sizeof(**cpu_infos));
|
|
586
687
|
if (!(*cpu_infos)) {
|
|
587
688
|
kstat_close(kc);
|
|
588
|
-
return
|
|
689
|
+
return UV_ENOMEM;
|
|
589
690
|
}
|
|
590
691
|
|
|
591
692
|
*count = lookup_instance;
|
|
@@ -655,56 +756,105 @@ int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
|
|
|
655
756
|
}
|
|
656
757
|
|
|
657
758
|
|
|
658
|
-
|
|
659
|
-
|
|
759
|
+
#ifdef SUNOS_NO_IFADDRS
|
|
760
|
+
int uv_interface_addresses(uv_interface_address_t** addresses, int* count) {
|
|
761
|
+
*count = 0;
|
|
762
|
+
*addresses = NULL;
|
|
763
|
+
return UV_ENOSYS;
|
|
764
|
+
}
|
|
765
|
+
#else /* SUNOS_NO_IFADDRS */
|
|
766
|
+
/*
|
|
767
|
+
* Inspired By:
|
|
768
|
+
* https://blogs.oracle.com/paulie/entry/retrieving_mac_address_in_solaris
|
|
769
|
+
* http://www.pauliesworld.org/project/getmac.c
|
|
770
|
+
*/
|
|
771
|
+
static int uv__set_phys_addr(uv_interface_address_t* address,
|
|
772
|
+
struct ifaddrs* ent) {
|
|
660
773
|
|
|
661
|
-
|
|
662
|
-
|
|
774
|
+
struct sockaddr_dl* sa_addr;
|
|
775
|
+
int sockfd;
|
|
776
|
+
size_t i;
|
|
777
|
+
struct arpreq arpreq;
|
|
778
|
+
|
|
779
|
+
/* This appears to only work as root */
|
|
780
|
+
sa_addr = (struct sockaddr_dl*)(ent->ifa_addr);
|
|
781
|
+
memcpy(address->phys_addr, LLADDR(sa_addr), sizeof(address->phys_addr));
|
|
782
|
+
for (i = 0; i < sizeof(address->phys_addr); i++) {
|
|
783
|
+
/* Check that all bytes of phys_addr are zero. */
|
|
784
|
+
if (address->phys_addr[i] != 0)
|
|
785
|
+
return 0;
|
|
786
|
+
}
|
|
787
|
+
memset(&arpreq, 0, sizeof(arpreq));
|
|
788
|
+
if (address->address.address4.sin_family == AF_INET) {
|
|
789
|
+
struct sockaddr_in* sin = ((struct sockaddr_in*)&arpreq.arp_pa);
|
|
790
|
+
sin->sin_addr.s_addr = address->address.address4.sin_addr.s_addr;
|
|
791
|
+
} else if (address->address.address4.sin_family == AF_INET6) {
|
|
792
|
+
struct sockaddr_in6* sin = ((struct sockaddr_in6*)&arpreq.arp_pa);
|
|
793
|
+
memcpy(sin->sin6_addr.s6_addr,
|
|
794
|
+
address->address.address6.sin6_addr.s6_addr,
|
|
795
|
+
sizeof(address->address.address6.sin6_addr.s6_addr));
|
|
796
|
+
} else {
|
|
797
|
+
return 0;
|
|
663
798
|
}
|
|
664
799
|
|
|
665
|
-
|
|
800
|
+
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
|
801
|
+
if (sockfd < 0)
|
|
802
|
+
return UV__ERR(errno);
|
|
803
|
+
|
|
804
|
+
if (ioctl(sockfd, SIOCGARP, (char*)&arpreq) == -1) {
|
|
805
|
+
uv__close(sockfd);
|
|
806
|
+
return UV__ERR(errno);
|
|
807
|
+
}
|
|
808
|
+
memcpy(address->phys_addr, arpreq.arp_ha.sa_data, sizeof(address->phys_addr));
|
|
809
|
+
uv__close(sockfd);
|
|
810
|
+
return 0;
|
|
666
811
|
}
|
|
667
812
|
|
|
668
813
|
|
|
814
|
+
static int uv__ifaddr_exclude(struct ifaddrs *ent) {
|
|
815
|
+
if (!((ent->ifa_flags & IFF_UP) && (ent->ifa_flags & IFF_RUNNING)))
|
|
816
|
+
return 1;
|
|
817
|
+
if (ent->ifa_addr == NULL)
|
|
818
|
+
return 1;
|
|
819
|
+
if (ent->ifa_addr->sa_family != AF_INET &&
|
|
820
|
+
ent->ifa_addr->sa_family != AF_INET6)
|
|
821
|
+
return 1;
|
|
822
|
+
return 0;
|
|
823
|
+
}
|
|
824
|
+
|
|
669
825
|
int uv_interface_addresses(uv_interface_address_t** addresses, int* count) {
|
|
670
|
-
#ifdef SUNOS_NO_IFADDRS
|
|
671
|
-
return -ENOSYS;
|
|
672
|
-
#else
|
|
673
826
|
uv_interface_address_t* address;
|
|
674
|
-
struct sockaddr_dl* sa_addr;
|
|
675
827
|
struct ifaddrs* addrs;
|
|
676
828
|
struct ifaddrs* ent;
|
|
677
|
-
int i;
|
|
678
|
-
|
|
679
|
-
if (getifaddrs(&addrs))
|
|
680
|
-
return -errno;
|
|
681
829
|
|
|
682
830
|
*count = 0;
|
|
831
|
+
*addresses = NULL;
|
|
832
|
+
|
|
833
|
+
if (getifaddrs(&addrs))
|
|
834
|
+
return UV__ERR(errno);
|
|
683
835
|
|
|
684
836
|
/* Count the number of interfaces */
|
|
685
837
|
for (ent = addrs; ent != NULL; ent = ent->ifa_next) {
|
|
686
|
-
if (
|
|
687
|
-
(ent->ifa_addr == NULL) ||
|
|
688
|
-
(ent->ifa_addr->sa_family == PF_PACKET)) {
|
|
838
|
+
if (uv__ifaddr_exclude(ent))
|
|
689
839
|
continue;
|
|
690
|
-
}
|
|
691
|
-
|
|
692
840
|
(*count)++;
|
|
693
841
|
}
|
|
694
842
|
|
|
843
|
+
if (*count == 0) {
|
|
844
|
+
freeifaddrs(addrs);
|
|
845
|
+
return 0;
|
|
846
|
+
}
|
|
847
|
+
|
|
695
848
|
*addresses = uv__malloc(*count * sizeof(**addresses));
|
|
696
849
|
if (!(*addresses)) {
|
|
697
850
|
freeifaddrs(addrs);
|
|
698
|
-
return
|
|
851
|
+
return UV_ENOMEM;
|
|
699
852
|
}
|
|
700
853
|
|
|
701
854
|
address = *addresses;
|
|
702
855
|
|
|
703
856
|
for (ent = addrs; ent != NULL; ent = ent->ifa_next) {
|
|
704
|
-
if (
|
|
705
|
-
continue;
|
|
706
|
-
|
|
707
|
-
if (ent->ifa_addr == NULL)
|
|
857
|
+
if (uv__ifaddr_exclude(ent))
|
|
708
858
|
continue;
|
|
709
859
|
|
|
710
860
|
address->name = uv__strdup(ent->ifa_name);
|
|
@@ -724,34 +874,15 @@ int uv_interface_addresses(uv_interface_address_t** addresses, int* count) {
|
|
|
724
874
|
address->is_internal = !!((ent->ifa_flags & IFF_PRIVATE) ||
|
|
725
875
|
(ent->ifa_flags & IFF_LOOPBACK));
|
|
726
876
|
|
|
877
|
+
uv__set_phys_addr(address, ent);
|
|
727
878
|
address++;
|
|
728
879
|
}
|
|
729
880
|
|
|
730
|
-
/* Fill in physical addresses for each interface */
|
|
731
|
-
for (ent = addrs; ent != NULL; ent = ent->ifa_next) {
|
|
732
|
-
if (!((ent->ifa_flags & IFF_UP) && (ent->ifa_flags & IFF_RUNNING)) ||
|
|
733
|
-
(ent->ifa_addr == NULL) ||
|
|
734
|
-
(ent->ifa_addr->sa_family != AF_LINK)) {
|
|
735
|
-
continue;
|
|
736
|
-
}
|
|
737
|
-
|
|
738
|
-
address = *addresses;
|
|
739
|
-
|
|
740
|
-
for (i = 0; i < (*count); i++) {
|
|
741
|
-
if (strcmp(address->name, ent->ifa_name) == 0) {
|
|
742
|
-
sa_addr = (struct sockaddr_dl*)(ent->ifa_addr);
|
|
743
|
-
memcpy(address->phys_addr, LLADDR(sa_addr), sizeof(address->phys_addr));
|
|
744
|
-
}
|
|
745
|
-
address++;
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
|
|
749
881
|
freeifaddrs(addrs);
|
|
750
882
|
|
|
751
883
|
return 0;
|
|
752
|
-
#endif /* SUNOS_NO_IFADDRS */
|
|
753
884
|
}
|
|
754
|
-
|
|
885
|
+
#endif /* SUNOS_NO_IFADDRS */
|
|
755
886
|
|
|
756
887
|
void uv_free_interface_addresses(uv_interface_address_t* addresses,
|
|
757
888
|
int count) {
|
|
@@ -763,3 +894,14 @@ void uv_free_interface_addresses(uv_interface_address_t* addresses,
|
|
|
763
894
|
|
|
764
895
|
uv__free(addresses);
|
|
765
896
|
}
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
#if !defined(_POSIX_VERSION) || _POSIX_VERSION < 200809L
|
|
900
|
+
size_t strnlen(const char* s, size_t maxlen) {
|
|
901
|
+
const char* end;
|
|
902
|
+
end = memchr(s, '\0', maxlen);
|
|
903
|
+
if (end == NULL)
|
|
904
|
+
return maxlen;
|
|
905
|
+
return end - s;
|
|
906
|
+
}
|
|
907
|
+
#endif
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* Copyright libuv project contributors. All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
* of this software and associated documentation files (the "Software"), to
|
|
5
|
+
* deal in the Software without restriction, including without limitation the
|
|
6
|
+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
7
|
+
* sell copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
* furnished to do so, subject to the following conditions:
|
|
9
|
+
*
|
|
10
|
+
* The above copyright notice and this permission notice shall be included in
|
|
11
|
+
* all copies or substantial portions of the Software.
|
|
12
|
+
*
|
|
13
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
18
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
19
|
+
* IN THE SOFTWARE.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#include "uv.h"
|
|
23
|
+
#include "internal.h"
|
|
24
|
+
|
|
25
|
+
#include <stdint.h>
|
|
26
|
+
#include <sys/sysinfo.h>
|
|
27
|
+
|
|
28
|
+
void uv_loadavg(double avg[3]) {
|
|
29
|
+
struct sysinfo info;
|
|
30
|
+
|
|
31
|
+
if (sysinfo(&info) < 0) return;
|
|
32
|
+
|
|
33
|
+
avg[0] = (double) info.loads[0] / 65536.0;
|
|
34
|
+
avg[1] = (double) info.loads[1] / 65536.0;
|
|
35
|
+
avg[2] = (double) info.loads[2] / 65536.0;
|
|
36
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* Copyright libuv project contributors. All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
* of this software and associated documentation files (the "Software"), to
|
|
5
|
+
* deal in the Software without restriction, including without limitation the
|
|
6
|
+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
7
|
+
* sell copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
* furnished to do so, subject to the following conditions:
|
|
9
|
+
*
|
|
10
|
+
* The above copyright notice and this permission notice shall be included in
|
|
11
|
+
* all copies or substantial portions of the Software.
|
|
12
|
+
*
|
|
13
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
18
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
19
|
+
* IN THE SOFTWARE.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#include "uv.h"
|
|
23
|
+
#include "internal.h"
|
|
24
|
+
|
|
25
|
+
#include <stdint.h>
|
|
26
|
+
#include <sys/sysinfo.h>
|
|
27
|
+
|
|
28
|
+
uint64_t uv_get_free_memory(void) {
|
|
29
|
+
struct sysinfo info;
|
|
30
|
+
|
|
31
|
+
if (sysinfo(&info) == 0)
|
|
32
|
+
return (uint64_t) info.freeram * info.mem_unit;
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
uint64_t uv_get_total_memory(void) {
|
|
37
|
+
struct sysinfo info;
|
|
38
|
+
|
|
39
|
+
if (sysinfo(&info) == 0)
|
|
40
|
+
return (uint64_t) info.totalram * info.mem_unit;
|
|
41
|
+
return 0;
|
|
42
|
+
}
|