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
|
@@ -21,9 +21,10 @@
|
|
|
21
21
|
#include "uv.h"
|
|
22
22
|
#include "internal.h"
|
|
23
23
|
|
|
24
|
-
#if TARGET_OS_IPHONE
|
|
24
|
+
#if TARGET_OS_IPHONE || MAC_OS_X_VERSION_MAX_ALLOWED < 1070
|
|
25
25
|
|
|
26
26
|
/* iOS (currently) doesn't provide the FSEvents-API (nor CoreServices) */
|
|
27
|
+
/* macOS prior to 10.7 doesn't provide the full FSEvents API so use kqueue */
|
|
27
28
|
|
|
28
29
|
int uv__fsevents_init(uv_fs_event_t* handle) {
|
|
29
30
|
return 0;
|
|
@@ -40,34 +41,33 @@ void uv__fsevents_loop_delete(uv_loop_t* loop) {
|
|
|
40
41
|
|
|
41
42
|
#else /* TARGET_OS_IPHONE */
|
|
42
43
|
|
|
44
|
+
#include "darwin-stub.h"
|
|
45
|
+
|
|
43
46
|
#include <dlfcn.h>
|
|
44
47
|
#include <assert.h>
|
|
45
48
|
#include <stdlib.h>
|
|
46
49
|
#include <pthread.h>
|
|
47
50
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
kFSEventStreamEventFlagMount | \
|
|
69
|
-
kFSEventStreamEventFlagUnmount | \
|
|
70
|
-
kFSEventStreamEventFlagRootChanged)
|
|
51
|
+
static const int kFSEventsModified =
|
|
52
|
+
kFSEventStreamEventFlagItemChangeOwner |
|
|
53
|
+
kFSEventStreamEventFlagItemFinderInfoMod |
|
|
54
|
+
kFSEventStreamEventFlagItemInodeMetaMod |
|
|
55
|
+
kFSEventStreamEventFlagItemModified |
|
|
56
|
+
kFSEventStreamEventFlagItemXattrMod;
|
|
57
|
+
|
|
58
|
+
static const int kFSEventsRenamed =
|
|
59
|
+
kFSEventStreamEventFlagItemCreated |
|
|
60
|
+
kFSEventStreamEventFlagItemRemoved |
|
|
61
|
+
kFSEventStreamEventFlagItemRenamed;
|
|
62
|
+
|
|
63
|
+
static const int kFSEventsSystem =
|
|
64
|
+
kFSEventStreamEventFlagUserDropped |
|
|
65
|
+
kFSEventStreamEventFlagKernelDropped |
|
|
66
|
+
kFSEventStreamEventFlagEventIdsWrapped |
|
|
67
|
+
kFSEventStreamEventFlagHistoryDone |
|
|
68
|
+
kFSEventStreamEventFlagMount |
|
|
69
|
+
kFSEventStreamEventFlagUnmount |
|
|
70
|
+
kFSEventStreamEventFlagRootChanged;
|
|
71
71
|
|
|
72
72
|
typedef struct uv__fsevents_event_s uv__fsevents_event_t;
|
|
73
73
|
typedef struct uv__cf_loop_signal_s uv__cf_loop_signal_t;
|
|
@@ -80,13 +80,13 @@ enum uv__cf_loop_signal_type_e {
|
|
|
80
80
|
typedef enum uv__cf_loop_signal_type_e uv__cf_loop_signal_type_t;
|
|
81
81
|
|
|
82
82
|
struct uv__cf_loop_signal_s {
|
|
83
|
-
|
|
83
|
+
struct uv__queue member;
|
|
84
84
|
uv_fs_event_t* handle;
|
|
85
85
|
uv__cf_loop_signal_type_t type;
|
|
86
86
|
};
|
|
87
87
|
|
|
88
88
|
struct uv__fsevents_event_s {
|
|
89
|
-
|
|
89
|
+
struct uv__queue member;
|
|
90
90
|
int events;
|
|
91
91
|
char path[1];
|
|
92
92
|
};
|
|
@@ -98,7 +98,7 @@ struct uv__cf_loop_state_s {
|
|
|
98
98
|
FSEventStreamRef fsevent_stream;
|
|
99
99
|
uv_sem_t fsevent_sem;
|
|
100
100
|
uv_mutex_t fsevent_mutex;
|
|
101
|
-
|
|
101
|
+
struct uv__queue fsevent_handles;
|
|
102
102
|
unsigned int fsevent_handle_count;
|
|
103
103
|
};
|
|
104
104
|
|
|
@@ -132,7 +132,6 @@ static void (*pCFRunLoopWakeUp)(CFRunLoopRef);
|
|
|
132
132
|
static CFStringRef (*pCFStringCreateWithFileSystemRepresentation)(
|
|
133
133
|
CFAllocatorRef,
|
|
134
134
|
const char*);
|
|
135
|
-
static CFStringEncoding (*pCFStringGetSystemEncoding)(void);
|
|
136
135
|
static CFStringRef (*pkCFRunLoopDefaultMode);
|
|
137
136
|
static FSEventStreamRef (*pFSEventStreamCreate)(CFAllocatorRef,
|
|
138
137
|
FSEventStreamCallback,
|
|
@@ -141,33 +140,32 @@ static FSEventStreamRef (*pFSEventStreamCreate)(CFAllocatorRef,
|
|
|
141
140
|
FSEventStreamEventId,
|
|
142
141
|
CFTimeInterval,
|
|
143
142
|
FSEventStreamCreateFlags);
|
|
144
|
-
static void (*pFSEventStreamFlushSync)(FSEventStreamRef);
|
|
145
143
|
static void (*pFSEventStreamInvalidate)(FSEventStreamRef);
|
|
146
144
|
static void (*pFSEventStreamRelease)(FSEventStreamRef);
|
|
147
145
|
static void (*pFSEventStreamScheduleWithRunLoop)(FSEventStreamRef,
|
|
148
146
|
CFRunLoopRef,
|
|
149
147
|
CFStringRef);
|
|
150
|
-
static
|
|
148
|
+
static int (*pFSEventStreamStart)(FSEventStreamRef);
|
|
151
149
|
static void (*pFSEventStreamStop)(FSEventStreamRef);
|
|
152
150
|
|
|
153
151
|
#define UV__FSEVENTS_PROCESS(handle, block) \
|
|
154
152
|
do { \
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
struct uv__queue events; \
|
|
154
|
+
struct uv__queue* q; \
|
|
157
155
|
uv__fsevents_event_t* event; \
|
|
158
156
|
int err; \
|
|
159
157
|
uv_mutex_lock(&(handle)->cf_mutex); \
|
|
160
158
|
/* Split-off all events and empty original queue */ \
|
|
161
|
-
|
|
159
|
+
uv__queue_move(&(handle)->cf_events, &events); \
|
|
162
160
|
/* Get error (if any) and zero original one */ \
|
|
163
161
|
err = (handle)->cf_error; \
|
|
164
162
|
(handle)->cf_error = 0; \
|
|
165
163
|
uv_mutex_unlock(&(handle)->cf_mutex); \
|
|
166
164
|
/* Loop through events, deallocating each after processing */ \
|
|
167
|
-
while (!
|
|
168
|
-
q =
|
|
169
|
-
event =
|
|
170
|
-
|
|
165
|
+
while (!uv__queue_empty(&events)) { \
|
|
166
|
+
q = uv__queue_head(&events); \
|
|
167
|
+
event = uv__queue_data(q, uv__fsevents_event_t, member); \
|
|
168
|
+
uv__queue_remove(q); \
|
|
171
169
|
/* NOTE: Checking uv__is_active() is required here, because handle \
|
|
172
170
|
* callback may close handle and invoking it after it will lead to \
|
|
173
171
|
* incorrect behaviour */ \
|
|
@@ -195,14 +193,14 @@ static void uv__fsevents_cb(uv_async_t* cb) {
|
|
|
195
193
|
|
|
196
194
|
/* Runs in CF thread, pushed event into handle's event list */
|
|
197
195
|
static void uv__fsevents_push_event(uv_fs_event_t* handle,
|
|
198
|
-
|
|
196
|
+
struct uv__queue* events,
|
|
199
197
|
int err) {
|
|
200
198
|
assert(events != NULL || err != 0);
|
|
201
199
|
uv_mutex_lock(&handle->cf_mutex);
|
|
202
200
|
|
|
203
201
|
/* Concatenate two queues */
|
|
204
202
|
if (events != NULL)
|
|
205
|
-
|
|
203
|
+
uv__queue_add(&handle->cf_events, events);
|
|
206
204
|
|
|
207
205
|
/* Propagate error */
|
|
208
206
|
if (err != 0)
|
|
@@ -214,7 +212,7 @@ static void uv__fsevents_push_event(uv_fs_event_t* handle,
|
|
|
214
212
|
|
|
215
213
|
|
|
216
214
|
/* Runs in CF thread, when there're events in FSEventStream */
|
|
217
|
-
static void uv__fsevents_event_cb(
|
|
215
|
+
static void uv__fsevents_event_cb(const FSEventStreamRef streamRef,
|
|
218
216
|
void* info,
|
|
219
217
|
size_t numEvents,
|
|
220
218
|
void* eventPaths,
|
|
@@ -226,11 +224,12 @@ static void uv__fsevents_event_cb(ConstFSEventStreamRef streamRef,
|
|
|
226
224
|
char* path;
|
|
227
225
|
char* pos;
|
|
228
226
|
uv_fs_event_t* handle;
|
|
229
|
-
|
|
227
|
+
struct uv__queue* q;
|
|
230
228
|
uv_loop_t* loop;
|
|
231
229
|
uv__cf_loop_state_t* state;
|
|
232
230
|
uv__fsevents_event_t* event;
|
|
233
|
-
|
|
231
|
+
FSEventStreamEventFlags flags;
|
|
232
|
+
struct uv__queue head;
|
|
234
233
|
|
|
235
234
|
loop = info;
|
|
236
235
|
state = loop->cf_state;
|
|
@@ -239,69 +238,86 @@ static void uv__fsevents_event_cb(ConstFSEventStreamRef streamRef,
|
|
|
239
238
|
|
|
240
239
|
/* For each handle */
|
|
241
240
|
uv_mutex_lock(&state->fsevent_mutex);
|
|
242
|
-
|
|
243
|
-
handle =
|
|
244
|
-
|
|
241
|
+
uv__queue_foreach(q, &state->fsevent_handles) {
|
|
242
|
+
handle = uv__queue_data(q, uv_fs_event_t, cf_member);
|
|
243
|
+
uv__queue_init(&head);
|
|
245
244
|
|
|
246
245
|
/* Process and filter out events */
|
|
247
246
|
for (i = 0; i < numEvents; i++) {
|
|
247
|
+
flags = eventFlags[i];
|
|
248
|
+
|
|
248
249
|
/* Ignore system events */
|
|
249
|
-
if (
|
|
250
|
+
if (flags & kFSEventsSystem)
|
|
250
251
|
continue;
|
|
251
252
|
|
|
252
253
|
path = paths[i];
|
|
253
254
|
len = strlen(path);
|
|
254
255
|
|
|
256
|
+
if (handle->realpath_len == 0)
|
|
257
|
+
continue; /* This should be unreachable */
|
|
258
|
+
|
|
255
259
|
/* Filter out paths that are outside handle's request */
|
|
256
|
-
if (
|
|
260
|
+
if (len < handle->realpath_len)
|
|
261
|
+
continue;
|
|
262
|
+
|
|
263
|
+
/* Make sure that realpath actually named a directory,
|
|
264
|
+
* (unless watching root, which alone keeps a trailing slash on the realpath)
|
|
265
|
+
* or that we matched the whole string */
|
|
266
|
+
if (handle->realpath_len != len &&
|
|
267
|
+
handle->realpath_len > 1 &&
|
|
268
|
+
path[handle->realpath_len] != '/')
|
|
269
|
+
continue;
|
|
270
|
+
|
|
271
|
+
if (memcmp(path, handle->realpath, handle->realpath_len) != 0)
|
|
257
272
|
continue;
|
|
258
273
|
|
|
259
|
-
if (handle->realpath_len
|
|
274
|
+
if (!(handle->realpath_len == 1 && handle->realpath[0] == '/')) {
|
|
275
|
+
/* Remove common prefix, unless the watched folder is "/" */
|
|
260
276
|
path += handle->realpath_len;
|
|
261
277
|
len -= handle->realpath_len;
|
|
262
278
|
|
|
263
|
-
|
|
264
|
-
|
|
279
|
+
if (len == 0) {
|
|
280
|
+
/* Since we're using fsevents to watch the file itself,
|
|
281
|
+
* realpath == path, and we now need to get the basename of the file back
|
|
282
|
+
* (for commonality with other codepaths and platforms). */
|
|
283
|
+
while (len < handle->realpath_len && path[-1] != '/') {
|
|
284
|
+
path--;
|
|
285
|
+
len++;
|
|
286
|
+
}
|
|
287
|
+
/* Created and Removed seem to be always set, but don't make sense */
|
|
288
|
+
flags &= ~kFSEventsRenamed;
|
|
289
|
+
} else {
|
|
290
|
+
/* Skip forward slash */
|
|
265
291
|
path++;
|
|
266
292
|
len--;
|
|
267
293
|
}
|
|
268
294
|
}
|
|
269
295
|
|
|
270
|
-
#ifdef MAC_OS_X_VERSION_10_7
|
|
271
|
-
/* Ignore events with path equal to directory itself */
|
|
272
|
-
if (len == 0)
|
|
273
|
-
continue;
|
|
274
|
-
#endif /* MAC_OS_X_VERSION_10_7 */
|
|
275
|
-
|
|
276
296
|
/* Do not emit events from subdirectories (without option set) */
|
|
277
|
-
if ((handle->cf_flags & UV_FS_EVENT_RECURSIVE) == 0 && *path != 0) {
|
|
297
|
+
if ((handle->cf_flags & UV_FS_EVENT_RECURSIVE) == 0 && *path != '\0') {
|
|
278
298
|
pos = strchr(path + 1, '/');
|
|
279
299
|
if (pos != NULL)
|
|
280
300
|
continue;
|
|
281
301
|
}
|
|
282
302
|
|
|
283
|
-
#ifndef MAC_OS_X_VERSION_10_7
|
|
284
|
-
path = "";
|
|
285
|
-
len = 0;
|
|
286
|
-
#endif /* MAC_OS_X_VERSION_10_7 */
|
|
287
|
-
|
|
288
303
|
event = uv__malloc(sizeof(*event) + len);
|
|
289
304
|
if (event == NULL)
|
|
290
305
|
break;
|
|
291
306
|
|
|
292
307
|
memset(event, 0, sizeof(*event));
|
|
293
308
|
memcpy(event->path, path, len + 1);
|
|
309
|
+
event->events = UV_RENAME;
|
|
294
310
|
|
|
295
|
-
if ((
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
311
|
+
if (0 == (flags & kFSEventsRenamed)) {
|
|
312
|
+
if (0 != (flags & kFSEventsModified) ||
|
|
313
|
+
0 == (flags & kFSEventStreamEventFlagItemIsDir))
|
|
314
|
+
event->events = UV_CHANGE;
|
|
315
|
+
}
|
|
300
316
|
|
|
301
|
-
|
|
317
|
+
uv__queue_insert_tail(&head, &event->member);
|
|
302
318
|
}
|
|
303
319
|
|
|
304
|
-
if (!
|
|
320
|
+
if (!uv__queue_empty(&head))
|
|
305
321
|
uv__fsevents_push_event(handle, &head, 0);
|
|
306
322
|
}
|
|
307
323
|
uv_mutex_unlock(&state->fsevent_mutex);
|
|
@@ -309,19 +325,17 @@ static void uv__fsevents_event_cb(ConstFSEventStreamRef streamRef,
|
|
|
309
325
|
|
|
310
326
|
|
|
311
327
|
/* Runs in CF thread */
|
|
312
|
-
static int uv__fsevents_create_stream(
|
|
313
|
-
|
|
328
|
+
static int uv__fsevents_create_stream(uv__cf_loop_state_t* state,
|
|
329
|
+
uv_loop_t* loop,
|
|
330
|
+
CFArrayRef paths) {
|
|
314
331
|
FSEventStreamContext ctx;
|
|
315
332
|
FSEventStreamRef ref;
|
|
316
333
|
CFAbsoluteTime latency;
|
|
317
334
|
FSEventStreamCreateFlags flags;
|
|
318
335
|
|
|
319
336
|
/* Initialize context */
|
|
320
|
-
ctx
|
|
337
|
+
memset(&ctx, 0, sizeof(ctx));
|
|
321
338
|
ctx.info = loop;
|
|
322
|
-
ctx.retain = NULL;
|
|
323
|
-
ctx.release = NULL;
|
|
324
|
-
ctx.copyDescription = NULL;
|
|
325
339
|
|
|
326
340
|
latency = 0.05;
|
|
327
341
|
|
|
@@ -354,14 +368,11 @@ static int uv__fsevents_create_stream(uv_loop_t* loop, CFArrayRef paths) {
|
|
|
354
368
|
flags);
|
|
355
369
|
assert(ref != NULL);
|
|
356
370
|
|
|
357
|
-
state
|
|
358
|
-
pFSEventStreamScheduleWithRunLoop(ref,
|
|
359
|
-
state->loop,
|
|
360
|
-
*pkCFRunLoopDefaultMode);
|
|
371
|
+
pFSEventStreamScheduleWithRunLoop(ref, state->loop, *pkCFRunLoopDefaultMode);
|
|
361
372
|
if (!pFSEventStreamStart(ref)) {
|
|
362
373
|
pFSEventStreamInvalidate(ref);
|
|
363
374
|
pFSEventStreamRelease(ref);
|
|
364
|
-
return
|
|
375
|
+
return UV_EMFILE;
|
|
365
376
|
}
|
|
366
377
|
|
|
367
378
|
state->fsevent_stream = ref;
|
|
@@ -370,17 +381,10 @@ static int uv__fsevents_create_stream(uv_loop_t* loop, CFArrayRef paths) {
|
|
|
370
381
|
|
|
371
382
|
|
|
372
383
|
/* Runs in CF thread */
|
|
373
|
-
static void uv__fsevents_destroy_stream(
|
|
374
|
-
uv__cf_loop_state_t* state;
|
|
375
|
-
|
|
376
|
-
state = loop->cf_state;
|
|
377
|
-
|
|
384
|
+
static void uv__fsevents_destroy_stream(uv__cf_loop_state_t* state) {
|
|
378
385
|
if (state->fsevent_stream == NULL)
|
|
379
386
|
return;
|
|
380
387
|
|
|
381
|
-
/* Flush all accumulated events */
|
|
382
|
-
pFSEventStreamFlushSync(state->fsevent_stream);
|
|
383
|
-
|
|
384
388
|
/* Stop emitting events */
|
|
385
389
|
pFSEventStreamStop(state->fsevent_stream);
|
|
386
390
|
|
|
@@ -392,10 +396,10 @@ static void uv__fsevents_destroy_stream(uv_loop_t* loop) {
|
|
|
392
396
|
|
|
393
397
|
|
|
394
398
|
/* Runs in CF thread, when there're new fsevent handles to add to stream */
|
|
395
|
-
static void uv__fsevents_reschedule(
|
|
399
|
+
static void uv__fsevents_reschedule(uv__cf_loop_state_t* state,
|
|
400
|
+
uv_loop_t* loop,
|
|
396
401
|
uv__cf_loop_signal_type_t type) {
|
|
397
|
-
|
|
398
|
-
QUEUE* q;
|
|
402
|
+
struct uv__queue* q;
|
|
399
403
|
uv_fs_event_t* curr;
|
|
400
404
|
CFArrayRef cf_paths;
|
|
401
405
|
CFStringRef* paths;
|
|
@@ -403,7 +407,6 @@ static void uv__fsevents_reschedule(uv_fs_event_t* handle,
|
|
|
403
407
|
int err;
|
|
404
408
|
unsigned int path_count;
|
|
405
409
|
|
|
406
|
-
state = handle->loop->cf_state;
|
|
407
410
|
paths = NULL;
|
|
408
411
|
cf_paths = NULL;
|
|
409
412
|
err = 0;
|
|
@@ -422,10 +425,10 @@ static void uv__fsevents_reschedule(uv_fs_event_t* handle,
|
|
|
422
425
|
uv_mutex_unlock(&state->fsevent_mutex);
|
|
423
426
|
|
|
424
427
|
/* Destroy previous FSEventStream */
|
|
425
|
-
uv__fsevents_destroy_stream(
|
|
428
|
+
uv__fsevents_destroy_stream(state);
|
|
426
429
|
|
|
427
430
|
/* Any failure below will be a memory failure */
|
|
428
|
-
err =
|
|
431
|
+
err = UV_ENOMEM;
|
|
429
432
|
|
|
430
433
|
/* Create list of all watched paths */
|
|
431
434
|
uv_mutex_lock(&state->fsevent_mutex);
|
|
@@ -439,9 +442,9 @@ static void uv__fsevents_reschedule(uv_fs_event_t* handle,
|
|
|
439
442
|
|
|
440
443
|
q = &state->fsevent_handles;
|
|
441
444
|
for (; i < path_count; i++) {
|
|
442
|
-
q =
|
|
445
|
+
q = uv__queue_next(q);
|
|
443
446
|
assert(q != &state->fsevent_handles);
|
|
444
|
-
curr =
|
|
447
|
+
curr = uv__queue_data(q, uv_fs_event_t, cf_member);
|
|
445
448
|
|
|
446
449
|
assert(curr->realpath != NULL);
|
|
447
450
|
paths[i] =
|
|
@@ -459,10 +462,10 @@ static void uv__fsevents_reschedule(uv_fs_event_t* handle,
|
|
|
459
462
|
/* Create new FSEventStream */
|
|
460
463
|
cf_paths = pCFArrayCreate(NULL, (const void**) paths, path_count, NULL);
|
|
461
464
|
if (cf_paths == NULL) {
|
|
462
|
-
err =
|
|
465
|
+
err = UV_ENOMEM;
|
|
463
466
|
goto final;
|
|
464
467
|
}
|
|
465
|
-
err = uv__fsevents_create_stream(
|
|
468
|
+
err = uv__fsevents_create_stream(state, loop, cf_paths);
|
|
466
469
|
}
|
|
467
470
|
|
|
468
471
|
final:
|
|
@@ -479,8 +482,8 @@ final:
|
|
|
479
482
|
|
|
480
483
|
/* Broadcast error to all handles */
|
|
481
484
|
uv_mutex_lock(&state->fsevent_mutex);
|
|
482
|
-
|
|
483
|
-
curr =
|
|
485
|
+
uv__queue_foreach(q, &state->fsevent_handles) {
|
|
486
|
+
curr = uv__queue_data(q, uv_fs_event_t, cf_member);
|
|
484
487
|
uv__fsevents_push_event(curr, NULL, err);
|
|
485
488
|
}
|
|
486
489
|
uv_mutex_unlock(&state->fsevent_mutex);
|
|
@@ -513,7 +516,7 @@ static int uv__fsevents_global_init(void) {
|
|
|
513
516
|
* but if it ever becomes one, we can turn the dynamic library handles into
|
|
514
517
|
* per-event loop properties and have the dynamic linker keep track for us.
|
|
515
518
|
*/
|
|
516
|
-
err =
|
|
519
|
+
err = UV_ENOSYS;
|
|
517
520
|
core_foundation_handle = dlopen("/System/Library/Frameworks/"
|
|
518
521
|
"CoreFoundation.framework/"
|
|
519
522
|
"Versions/A/CoreFoundation",
|
|
@@ -528,7 +531,7 @@ static int uv__fsevents_global_init(void) {
|
|
|
528
531
|
if (core_services_handle == NULL)
|
|
529
532
|
goto out;
|
|
530
533
|
|
|
531
|
-
err =
|
|
534
|
+
err = UV_ENOENT;
|
|
532
535
|
#define V(handle, symbol) \
|
|
533
536
|
do { \
|
|
534
537
|
*(void **)(&p ## symbol) = dlsym((handle), #symbol); \
|
|
@@ -547,10 +550,8 @@ static int uv__fsevents_global_init(void) {
|
|
|
547
550
|
V(core_foundation_handle, CFRunLoopStop);
|
|
548
551
|
V(core_foundation_handle, CFRunLoopWakeUp);
|
|
549
552
|
V(core_foundation_handle, CFStringCreateWithFileSystemRepresentation);
|
|
550
|
-
V(core_foundation_handle, CFStringGetSystemEncoding);
|
|
551
553
|
V(core_foundation_handle, kCFRunLoopDefaultMode);
|
|
552
554
|
V(core_services_handle, FSEventStreamCreate);
|
|
553
|
-
V(core_services_handle, FSEventStreamFlushSync);
|
|
554
555
|
V(core_services_handle, FSEventStreamInvalidate);
|
|
555
556
|
V(core_services_handle, FSEventStreamRelease);
|
|
556
557
|
V(core_services_handle, FSEventStreamScheduleWithRunLoop);
|
|
@@ -579,8 +580,7 @@ out:
|
|
|
579
580
|
static int uv__fsevents_loop_init(uv_loop_t* loop) {
|
|
580
581
|
CFRunLoopSourceContext ctx;
|
|
581
582
|
uv__cf_loop_state_t* state;
|
|
582
|
-
pthread_attr_t
|
|
583
|
-
pthread_attr_t* attr;
|
|
583
|
+
pthread_attr_t attr;
|
|
584
584
|
int err;
|
|
585
585
|
|
|
586
586
|
if (loop->cf_state != NULL)
|
|
@@ -592,7 +592,7 @@ static int uv__fsevents_loop_init(uv_loop_t* loop) {
|
|
|
592
592
|
|
|
593
593
|
state = uv__calloc(1, sizeof(*state));
|
|
594
594
|
if (state == NULL)
|
|
595
|
-
return
|
|
595
|
+
return UV_ENOMEM;
|
|
596
596
|
|
|
597
597
|
err = uv_mutex_init(&loop->cf_mutex);
|
|
598
598
|
if (err)
|
|
@@ -602,7 +602,7 @@ static int uv__fsevents_loop_init(uv_loop_t* loop) {
|
|
|
602
602
|
if (err)
|
|
603
603
|
goto fail_sem_init;
|
|
604
604
|
|
|
605
|
-
|
|
605
|
+
uv__queue_init(&loop->cf_signals);
|
|
606
606
|
|
|
607
607
|
err = uv_sem_init(&state->fsevent_sem, 0);
|
|
608
608
|
if (err)
|
|
@@ -612,7 +612,7 @@ static int uv__fsevents_loop_init(uv_loop_t* loop) {
|
|
|
612
612
|
if (err)
|
|
613
613
|
goto fail_fsevent_mutex_init;
|
|
614
614
|
|
|
615
|
-
|
|
615
|
+
uv__queue_init(&state->fsevent_handles);
|
|
616
616
|
state->fsevent_need_reschedule = 0;
|
|
617
617
|
state->fsevent_handle_count = 0;
|
|
618
618
|
|
|
@@ -621,29 +621,23 @@ static int uv__fsevents_loop_init(uv_loop_t* loop) {
|
|
|
621
621
|
ctx.perform = uv__cf_loop_cb;
|
|
622
622
|
state->signal_source = pCFRunLoopSourceCreate(NULL, 0, &ctx);
|
|
623
623
|
if (state->signal_source == NULL) {
|
|
624
|
-
err =
|
|
624
|
+
err = UV_ENOMEM;
|
|
625
625
|
goto fail_signal_source_create;
|
|
626
626
|
}
|
|
627
627
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
* that in itself is not a fatal error.
|
|
631
|
-
*/
|
|
632
|
-
attr = &attr_storage;
|
|
633
|
-
if (pthread_attr_init(attr))
|
|
634
|
-
attr = NULL;
|
|
628
|
+
if (pthread_attr_init(&attr))
|
|
629
|
+
abort();
|
|
635
630
|
|
|
636
|
-
if (attr
|
|
637
|
-
|
|
638
|
-
abort();
|
|
631
|
+
if (pthread_attr_setstacksize(&attr, uv__thread_stack_size()))
|
|
632
|
+
abort();
|
|
639
633
|
|
|
640
634
|
loop->cf_state = state;
|
|
641
635
|
|
|
642
636
|
/* uv_thread_t is an alias for pthread_t. */
|
|
643
|
-
err =
|
|
637
|
+
err = UV__ERR(pthread_create(&loop->cf_thread, &attr, uv__cf_loop_runner, loop));
|
|
644
638
|
|
|
645
|
-
if (attr
|
|
646
|
-
|
|
639
|
+
if (pthread_attr_destroy(&attr))
|
|
640
|
+
abort();
|
|
647
641
|
|
|
648
642
|
if (err)
|
|
649
643
|
goto fail_thread_create;
|
|
@@ -677,7 +671,7 @@ fail_mutex_init:
|
|
|
677
671
|
void uv__fsevents_loop_delete(uv_loop_t* loop) {
|
|
678
672
|
uv__cf_loop_signal_t* s;
|
|
679
673
|
uv__cf_loop_state_t* state;
|
|
680
|
-
|
|
674
|
+
struct uv__queue* q;
|
|
681
675
|
|
|
682
676
|
if (loop->cf_state == NULL)
|
|
683
677
|
return;
|
|
@@ -690,10 +684,10 @@ void uv__fsevents_loop_delete(uv_loop_t* loop) {
|
|
|
690
684
|
uv_mutex_destroy(&loop->cf_mutex);
|
|
691
685
|
|
|
692
686
|
/* Free any remaining data */
|
|
693
|
-
while (!
|
|
694
|
-
q =
|
|
695
|
-
s =
|
|
696
|
-
|
|
687
|
+
while (!uv__queue_empty(&loop->cf_signals)) {
|
|
688
|
+
q = uv__queue_head(&loop->cf_signals);
|
|
689
|
+
s = uv__queue_data(q, uv__cf_loop_signal_t, member);
|
|
690
|
+
uv__queue_remove(q);
|
|
697
691
|
uv__free(s);
|
|
698
692
|
}
|
|
699
693
|
|
|
@@ -727,6 +721,8 @@ static void* uv__cf_loop_runner(void* arg) {
|
|
|
727
721
|
state->signal_source,
|
|
728
722
|
*pkCFRunLoopDefaultMode);
|
|
729
723
|
|
|
724
|
+
state->loop = NULL;
|
|
725
|
+
|
|
730
726
|
return NULL;
|
|
731
727
|
}
|
|
732
728
|
|
|
@@ -735,28 +731,28 @@ static void* uv__cf_loop_runner(void* arg) {
|
|
|
735
731
|
static void uv__cf_loop_cb(void* arg) {
|
|
736
732
|
uv_loop_t* loop;
|
|
737
733
|
uv__cf_loop_state_t* state;
|
|
738
|
-
|
|
739
|
-
|
|
734
|
+
struct uv__queue* item;
|
|
735
|
+
struct uv__queue split_head;
|
|
740
736
|
uv__cf_loop_signal_t* s;
|
|
741
737
|
|
|
742
738
|
loop = arg;
|
|
743
739
|
state = loop->cf_state;
|
|
744
740
|
|
|
745
741
|
uv_mutex_lock(&loop->cf_mutex);
|
|
746
|
-
|
|
742
|
+
uv__queue_move(&loop->cf_signals, &split_head);
|
|
747
743
|
uv_mutex_unlock(&loop->cf_mutex);
|
|
748
744
|
|
|
749
|
-
while (!
|
|
750
|
-
item =
|
|
751
|
-
|
|
745
|
+
while (!uv__queue_empty(&split_head)) {
|
|
746
|
+
item = uv__queue_head(&split_head);
|
|
747
|
+
uv__queue_remove(item);
|
|
752
748
|
|
|
753
|
-
s =
|
|
749
|
+
s = uv__queue_data(item, uv__cf_loop_signal_t, member);
|
|
754
750
|
|
|
755
751
|
/* This was a termination signal */
|
|
756
752
|
if (s->handle == NULL)
|
|
757
753
|
pCFRunLoopStop(state->loop);
|
|
758
754
|
else
|
|
759
|
-
uv__fsevents_reschedule(
|
|
755
|
+
uv__fsevents_reschedule(state, loop, s->type);
|
|
760
756
|
|
|
761
757
|
uv__free(s);
|
|
762
758
|
}
|
|
@@ -772,26 +768,28 @@ int uv__cf_loop_signal(uv_loop_t* loop,
|
|
|
772
768
|
|
|
773
769
|
item = uv__malloc(sizeof(*item));
|
|
774
770
|
if (item == NULL)
|
|
775
|
-
return
|
|
771
|
+
return UV_ENOMEM;
|
|
776
772
|
|
|
777
773
|
item->handle = handle;
|
|
778
774
|
item->type = type;
|
|
779
775
|
|
|
780
776
|
uv_mutex_lock(&loop->cf_mutex);
|
|
781
|
-
|
|
782
|
-
uv_mutex_unlock(&loop->cf_mutex);
|
|
777
|
+
uv__queue_insert_tail(&loop->cf_signals, &item->member);
|
|
783
778
|
|
|
784
779
|
state = loop->cf_state;
|
|
785
780
|
assert(state != NULL);
|
|
786
781
|
pCFRunLoopSourceSignal(state->signal_source);
|
|
787
782
|
pCFRunLoopWakeUp(state->loop);
|
|
788
783
|
|
|
784
|
+
uv_mutex_unlock(&loop->cf_mutex);
|
|
785
|
+
|
|
789
786
|
return 0;
|
|
790
787
|
}
|
|
791
788
|
|
|
792
789
|
|
|
793
790
|
/* Runs in UV loop to initialize handle */
|
|
794
791
|
int uv__fsevents_init(uv_fs_event_t* handle) {
|
|
792
|
+
char* buf;
|
|
795
793
|
int err;
|
|
796
794
|
uv__cf_loop_state_t* state;
|
|
797
795
|
|
|
@@ -800,13 +798,17 @@ int uv__fsevents_init(uv_fs_event_t* handle) {
|
|
|
800
798
|
return err;
|
|
801
799
|
|
|
802
800
|
/* Get absolute path to file */
|
|
803
|
-
|
|
801
|
+
buf = realpath(handle->path, NULL);
|
|
802
|
+
if (buf == NULL)
|
|
803
|
+
return UV__ERR(errno);
|
|
804
|
+
handle->realpath = uv__strdup(buf);
|
|
805
|
+
free(buf); /* _Not_ uv__free. */
|
|
804
806
|
if (handle->realpath == NULL)
|
|
805
|
-
return
|
|
807
|
+
return UV_ENOMEM;
|
|
806
808
|
handle->realpath_len = strlen(handle->realpath);
|
|
807
809
|
|
|
808
810
|
/* Initialize event queue */
|
|
809
|
-
|
|
811
|
+
uv__queue_init(&handle->cf_events);
|
|
810
812
|
handle->cf_error = 0;
|
|
811
813
|
|
|
812
814
|
/*
|
|
@@ -815,13 +817,13 @@ int uv__fsevents_init(uv_fs_event_t* handle) {
|
|
|
815
817
|
*/
|
|
816
818
|
handle->cf_cb = uv__malloc(sizeof(*handle->cf_cb));
|
|
817
819
|
if (handle->cf_cb == NULL) {
|
|
818
|
-
err =
|
|
820
|
+
err = UV_ENOMEM;
|
|
819
821
|
goto fail_cf_cb_malloc;
|
|
820
822
|
}
|
|
821
823
|
|
|
822
824
|
handle->cf_cb->data = handle;
|
|
823
825
|
uv_async_init(handle->loop, handle->cf_cb, uv__fsevents_cb);
|
|
824
|
-
handle->cf_cb->flags |=
|
|
826
|
+
handle->cf_cb->flags |= UV_HANDLE_INTERNAL;
|
|
825
827
|
uv_unref((uv_handle_t*) handle->cf_cb);
|
|
826
828
|
|
|
827
829
|
err = uv_mutex_init(&handle->cf_mutex);
|
|
@@ -831,7 +833,7 @@ int uv__fsevents_init(uv_fs_event_t* handle) {
|
|
|
831
833
|
/* Insert handle into the list */
|
|
832
834
|
state = handle->loop->cf_state;
|
|
833
835
|
uv_mutex_lock(&state->fsevent_mutex);
|
|
834
|
-
|
|
836
|
+
uv__queue_insert_tail(&state->fsevent_handles, &handle->cf_member);
|
|
835
837
|
state->fsevent_handle_count++;
|
|
836
838
|
state->fsevent_need_reschedule = 1;
|
|
837
839
|
uv_mutex_unlock(&state->fsevent_mutex);
|
|
@@ -866,12 +868,12 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
|
|
|
866
868
|
uv__cf_loop_state_t* state;
|
|
867
869
|
|
|
868
870
|
if (handle->cf_cb == NULL)
|
|
869
|
-
return
|
|
871
|
+
return UV_EINVAL;
|
|
870
872
|
|
|
871
873
|
/* Remove handle from the list */
|
|
872
874
|
state = handle->loop->cf_state;
|
|
873
875
|
uv_mutex_lock(&state->fsevent_mutex);
|
|
874
|
-
|
|
876
|
+
uv__queue_remove(&handle->cf_member);
|
|
875
877
|
state->fsevent_handle_count--;
|
|
876
878
|
state->fsevent_need_reschedule = 1;
|
|
877
879
|
uv_mutex_unlock(&state->fsevent_mutex);
|
|
@@ -880,7 +882,7 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
|
|
|
880
882
|
assert(handle != NULL);
|
|
881
883
|
err = uv__cf_loop_signal(handle->loop, handle, kUVCFLoopSignalClosing);
|
|
882
884
|
if (err)
|
|
883
|
-
return
|
|
885
|
+
return UV__ERR(err);
|
|
884
886
|
|
|
885
887
|
/* Wait for deinitialization */
|
|
886
888
|
uv_sem_wait(&state->fsevent_sem);
|