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.
Files changed (650) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +33 -1
  3. data/CONTRIBUTING.md +7 -311
  4. data/CONTRIBUTORS +1 -0
  5. data/LICENSE +1 -1
  6. data/README.md +1 -1
  7. data/Rakefile +1 -1
  8. data/bin/passenger +1 -1
  9. data/bin/passenger-config +1 -1
  10. data/bin/passenger-install-apache2-module +1 -1
  11. data/bin/passenger-install-nginx-module +4 -9
  12. data/bin/passenger-memory-stats +1 -1
  13. data/bin/passenger-status +1 -1
  14. data/build/agent.rb +13 -15
  15. data/build/apache2.rb +13 -16
  16. data/build/basics.rb +10 -13
  17. data/build/common_library.rb +5 -9
  18. data/build/cxx_tests.rb +37 -12
  19. data/build/integration_tests.rb +5 -2
  20. data/build/misc.rb +1 -1
  21. data/build/nginx.rb +1 -1
  22. data/build/node_tests.rb +1 -1
  23. data/build/oxt_tests.rb +6 -8
  24. data/build/packaging.rb +1 -1
  25. data/build/ruby_extension.rb +1 -1
  26. data/build/ruby_tests.rb +1 -1
  27. data/build/schema_printer.rb +13 -15
  28. data/build/support/cplusplus.rb +61 -69
  29. data/build/support/cxx_dependency_map.rb +2 -1
  30. data/build/support/general.rb +1 -1
  31. data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
  32. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +1 -1
  33. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +1 -1
  34. data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
  35. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  36. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +1 -1
  37. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +1 -1
  38. data/build/test_basics.rb +1 -1
  39. data/dev/copy_boost_headers +1 -1
  40. data/dev/index_cxx_dependencies.rb +5 -1
  41. data/dev/libev-changes.patch +108 -0
  42. data/dev/nginx_version_sha256 +1 -1
  43. data/dev/ruby_server.rb +1 -6
  44. data/dev/upgrading_libuv.sh +16 -0
  45. data/doc/BasicArchitectureOverview.md +55 -0
  46. data/doc/BuildCaching.md +23 -0
  47. data/doc/BuildSystem.md +49 -0
  48. data/doc/DebuggingAndStressTesting.md +2 -0
  49. data/doc/DesignAspects/LimitedGemDependencies.md +1 -0
  50. data/doc/DevEnvironmentSetup.md +46 -0
  51. data/doc/DevHandbook.md +28 -0
  52. data/doc/Packaging.md +1 -1
  53. data/doc/RunningTests.md +88 -0
  54. data/doc/{TempFileHandling.md → SecureTempFileHandling.md} +1 -1
  55. data/doc/{CxxTestingGuide.md → WritingCxxTests.md} +1 -20
  56. data/src/agent/AgentMain.cpp +1 -1
  57. data/src/agent/Core/ApiServer.h +1 -1
  58. data/src/agent/Core/ApplicationPool/AbstractSession.h +1 -1
  59. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +1 -1
  60. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +1 -1
  61. data/src/agent/Core/ApplicationPool/Common.h +1 -1
  62. data/src/agent/Core/ApplicationPool/Context.h +1 -1
  63. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +1 -1
  64. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +1 -1
  65. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +1 -1
  66. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +1 -1
  67. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  68. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
  69. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +1 -1
  70. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +1 -1
  71. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -1
  72. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +1 -1
  73. data/src/agent/Core/ApplicationPool/Group.h +1 -1
  74. data/src/agent/Core/ApplicationPool/Implementation.cpp +1 -1
  75. data/src/agent/Core/ApplicationPool/Options.h +1 -1
  76. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +1 -1
  77. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
  78. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +1 -1
  79. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +1 -1
  80. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +1 -1
  81. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +1 -1
  82. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
  83. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  84. data/src/agent/Core/ApplicationPool/Pool.h +1 -1
  85. data/src/agent/Core/ApplicationPool/Process.cpp +1 -1
  86. data/src/agent/Core/ApplicationPool/Process.h +1 -1
  87. data/src/agent/Core/ApplicationPool/Session.h +1 -1
  88. data/src/agent/Core/ApplicationPool/Socket.h +1 -1
  89. data/src/agent/Core/ApplicationPool/TestSession.h +1 -1
  90. data/src/agent/Core/Config.h +3 -2
  91. data/src/agent/Core/ConfigChange.cpp +1 -1
  92. data/src/agent/Core/ConfigChange.h +1 -1
  93. data/src/agent/Core/Controller/AppResponse.h +1 -1
  94. data/src/agent/Core/Controller/BufferBody.cpp +1 -1
  95. data/src/agent/Core/Controller/CheckoutSession.cpp +8 -5
  96. data/src/agent/Core/Controller/Client.h +1 -1
  97. data/src/agent/Core/Controller/Config.cpp +1 -1
  98. data/src/agent/Core/Controller/Config.h +2 -2
  99. data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
  100. data/src/agent/Core/Controller/Hooks.cpp +12 -9
  101. data/src/agent/Core/Controller/Implementation.cpp +1 -1
  102. data/src/agent/Core/Controller/InitRequest.cpp +1 -1
  103. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -1
  104. data/src/agent/Core/Controller/InternalUtils.cpp +1 -1
  105. data/src/agent/Core/Controller/Miscellaneous.cpp +1 -1
  106. data/src/agent/Core/Controller/Request.h +1 -1
  107. data/src/agent/Core/Controller/SendRequest.cpp +1 -1
  108. data/src/agent/Core/Controller/StateInspection.cpp +1 -1
  109. data/src/agent/Core/Controller/TurboCaching.h +1 -1
  110. data/src/agent/Core/Controller.h +1 -1
  111. data/src/agent/Core/CoreMain.cpp +1 -1
  112. data/src/agent/Core/OptionParser.h +1 -1
  113. data/src/agent/Core/ResponseCache.h +1 -1
  114. data/src/agent/Core/SecurityUpdateChecker.h +1 -1
  115. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +1 -1
  116. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +1 -1
  117. data/src/agent/Core/SpawningKit/Config.h +1 -1
  118. data/src/agent/Core/SpawningKit/Context.h +1 -1
  119. data/src/agent/Core/SpawningKit/DirectSpawner.h +1 -1
  120. data/src/agent/Core/SpawningKit/DummySpawner.h +1 -1
  121. data/src/agent/Core/SpawningKit/ErrorRenderer.h +1 -1
  122. data/src/agent/Core/SpawningKit/Exceptions.h +63 -2
  123. data/src/agent/Core/SpawningKit/Factory.h +1 -1
  124. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
  125. data/src/agent/Core/SpawningKit/Handshake/Perform.h +3 -2
  126. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  127. data/src/agent/Core/SpawningKit/Handshake/Session.h +1 -1
  128. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +1 -1
  129. data/src/agent/Core/SpawningKit/Journey.h +1 -1
  130. data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
  131. data/src/agent/Core/SpawningKit/README.md +3 -3
  132. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +1 -1
  133. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +1 -1
  134. data/src/agent/Core/SpawningKit/Result.h +1 -1
  135. data/src/agent/Core/SpawningKit/SmartSpawner.h +17 -17
  136. data/src/agent/Core/SpawningKit/Spawner.h +1 -1
  137. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -1
  138. data/src/agent/Core/TelemetryCollector.h +1 -1
  139. data/src/agent/ExecHelper/ExecHelperMain.cpp +1 -1
  140. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +1 -1
  141. data/src/agent/MainFunctions.h +1 -1
  142. data/src/agent/Shared/ApiAccountUtils.h +4 -3
  143. data/src/agent/Shared/ApiServerUtils.h +1 -2
  144. data/src/agent/Shared/ApplicationPoolApiKey.h +1 -1
  145. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +1 -1
  146. data/src/agent/Shared/Fundamentals/AbortHandler.h +1 -1
  147. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
  148. data/src/agent/Shared/Fundamentals/Initialization.h +1 -1
  149. data/src/agent/Shared/Fundamentals/Utils.cpp +1 -1
  150. data/src/agent/Shared/Fundamentals/Utils.h +1 -1
  151. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +1 -1
  152. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -1
  153. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +1 -1
  154. data/src/agent/Watchdog/ApiServer.h +7 -6
  155. data/src/agent/Watchdog/Config.h +2 -2
  156. data/src/apache2_module/Bucket.cpp +1 -1
  157. data/src/apache2_module/Bucket.h +1 -1
  158. data/src/apache2_module/CBindings.cpp +1 -1
  159. data/src/apache2_module/Config.cpp +1 -1
  160. data/src/apache2_module/Config.h +1 -1
  161. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +104 -104
  162. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  163. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +1 -1
  164. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +1 -1
  165. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +1 -1
  166. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +1 -1
  167. data/src/apache2_module/ConfigGeneral/Common.h +1 -1
  168. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +1 -1
  169. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +1 -1
  170. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +1 -1
  171. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +1 -1
  172. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +1 -1
  173. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +1 -1
  174. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +1 -1
  175. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
  176. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +1 -1
  177. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +1 -1
  178. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +1 -1
  179. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  180. data/src/apache2_module/DirectoryMapper.h +1 -1
  181. data/src/apache2_module/Hooks.cpp +8 -2
  182. data/src/apache2_module/Hooks.h +1 -1
  183. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +1 -1
  184. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
  185. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +1 -1
  186. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  187. data/src/apache2_module/Utils.h +1 -1
  188. data/src/apache2_module/mod_passenger.c +1 -1
  189. data/src/cxx_supportlib/Algorithms/Hasher.cpp +1 -1
  190. data/src/cxx_supportlib/Algorithms/Hasher.h +1 -1
  191. data/src/cxx_supportlib/Algorithms/MovingAverage.h +1 -1
  192. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +1 -1
  193. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +1 -1
  194. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +1 -1
  195. data/src/cxx_supportlib/AppTypeDetector/Detector.h +1 -1
  196. data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
  197. data/src/cxx_supportlib/BackgroundEventLoop.h +1 -1
  198. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +1 -1
  199. data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
  200. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
  201. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +1 -1
  202. data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +1 -3
  203. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +3 -3
  204. data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
  205. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +1 -1
  206. data/src/cxx_supportlib/ConfigKit/Store.h +1 -1
  207. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +1 -1
  208. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +1 -1
  209. data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
  210. data/src/cxx_supportlib/ConfigKit/Utils.h +1 -1
  211. data/src/cxx_supportlib/Constants.h +2 -2
  212. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +1 -1
  213. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +1 -1
  214. data/src/cxx_supportlib/DataStructures/LString.cpp +1 -1
  215. data/src/cxx_supportlib/DataStructures/LString.h +1 -1
  216. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
  217. data/src/cxx_supportlib/DataStructures/StringMap.h +1 -1
  218. data/src/cxx_supportlib/Exceptions.cpp +1 -1
  219. data/src/cxx_supportlib/Exceptions.h +1 -1
  220. data/src/cxx_supportlib/FileDescriptor.h +1 -1
  221. data/src/cxx_supportlib/FileTools/FileManip.cpp +1 -1
  222. data/src/cxx_supportlib/FileTools/FileManip.h +1 -1
  223. data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
  224. data/src/cxx_supportlib/FileTools/PathManip.h +1 -1
  225. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +1 -1
  226. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +1 -1
  227. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +1 -1
  228. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +1 -1
  229. data/src/cxx_supportlib/Hooks.h +1 -1
  230. data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
  231. data/src/cxx_supportlib/IOTools/IOUtils.cpp +10 -10
  232. data/src/cxx_supportlib/IOTools/IOUtils.h +1 -1
  233. data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
  234. data/src/cxx_supportlib/IOTools/MessageSerialization.h +1 -1
  235. data/src/cxx_supportlib/InstanceDirectory.h +1 -1
  236. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +1 -1
  237. data/src/cxx_supportlib/JsonTools/Autocast.h +1 -1
  238. data/src/cxx_supportlib/JsonTools/CBindings.cpp +1 -1
  239. data/src/cxx_supportlib/JsonTools/CBindings.h +1 -1
  240. data/src/cxx_supportlib/JsonTools/JsonUtils.h +1 -1
  241. data/src/cxx_supportlib/LoggingKit/Assert.h +1 -1
  242. data/src/cxx_supportlib/LoggingKit/Config.h +2 -1
  243. data/src/cxx_supportlib/LoggingKit/Context.h +1 -1
  244. data/src/cxx_supportlib/LoggingKit/Forward.h +1 -1
  245. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +11 -1
  246. data/src/cxx_supportlib/LoggingKit/Logging.h +1 -1
  247. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +1 -1
  248. data/src/cxx_supportlib/LveLoggingDecorator.h +1 -1
  249. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +1 -1
  250. data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
  251. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  252. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  253. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +1 -1
  254. data/src/cxx_supportlib/ProcessManagement/Ruby.h +1 -1
  255. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +1 -1
  256. data/src/cxx_supportlib/ProcessManagement/Spawn.h +1 -1
  257. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
  258. data/src/cxx_supportlib/ProcessManagement/Utils.h +1 -1
  259. data/src/cxx_supportlib/RandomGenerator.h +1 -1
  260. data/src/cxx_supportlib/ResourceLocator.h +1 -1
  261. data/src/cxx_supportlib/SafeLibev.h +1 -1
  262. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +9 -27
  263. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -2
  264. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +1 -1
  265. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -1
  266. data/src/cxx_supportlib/ServerKit/Channel.h +1 -1
  267. data/src/cxx_supportlib/ServerKit/Client.h +1 -1
  268. data/src/cxx_supportlib/ServerKit/ClientRef.h +1 -1
  269. data/src/cxx_supportlib/ServerKit/Config.h +1 -1
  270. data/src/cxx_supportlib/ServerKit/Context.h +1 -1
  271. data/src/cxx_supportlib/ServerKit/CookieUtils.h +1 -1
  272. data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
  273. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +1 -1
  274. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +1 -1
  275. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +54 -2
  276. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +1 -1
  277. data/src/cxx_supportlib/ServerKit/HeaderTable.h +1 -1
  278. data/src/cxx_supportlib/ServerKit/Hooks.h +1 -1
  279. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  280. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +1 -1
  281. data/src/cxx_supportlib/ServerKit/HttpClient.h +1 -1
  282. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
  283. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
  284. data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
  285. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +1 -1
  286. data/src/cxx_supportlib/ServerKit/HttpServer.h +1 -1
  287. data/src/cxx_supportlib/ServerKit/Implementation.cpp +1 -1
  288. data/src/cxx_supportlib/ServerKit/Server.h +4 -2
  289. data/src/cxx_supportlib/StaticString.h +1 -1
  290. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  291. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +1 -1
  292. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +1 -1
  293. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +1 -1
  294. data/src/cxx_supportlib/StrIntTools/StringScanning.h +1 -1
  295. data/src/cxx_supportlib/StrIntTools/Template.h +1 -1
  296. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +1 -1
  297. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  298. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +1 -1
  299. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +1 -1
  300. data/src/cxx_supportlib/SystemTools/SystemTime.h +1 -1
  301. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +1 -1
  302. data/src/cxx_supportlib/SystemTools/UserDatabase.h +1 -1
  303. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +1 -1
  304. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +1 -1
  305. data/src/cxx_supportlib/Utils/BlockingQueue.h +1 -1
  306. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +1 -1
  307. data/src/cxx_supportlib/Utils/CachedFileStat.h +1 -1
  308. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +1 -1
  309. data/src/cxx_supportlib/Utils/ClassUtils.h +1 -1
  310. data/src/cxx_supportlib/Utils/Curl.h +1 -1
  311. data/src/cxx_supportlib/Utils/FastStringStream.h +1 -1
  312. data/src/cxx_supportlib/Utils/FileChangeChecker.h +1 -1
  313. data/src/cxx_supportlib/Utils/HttpConstants.h +1 -1
  314. data/src/cxx_supportlib/Utils/IniFile.h +1 -1
  315. data/src/cxx_supportlib/Utils/MessagePassing.h +1 -1
  316. data/src/cxx_supportlib/Utils/OptionParsing.h +1 -1
  317. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +1 -1
  318. data/src/cxx_supportlib/Utils/ScopeGuard.h +1 -1
  319. data/src/cxx_supportlib/Utils/SpeedMeter.h +1 -1
  320. data/src/cxx_supportlib/Utils/Timer.h +1 -1
  321. data/src/cxx_supportlib/Utils/VariantMap.h +1 -1
  322. data/src/cxx_supportlib/Utils.cpp +1 -1
  323. data/src/cxx_supportlib/Utils.h +1 -1
  324. data/src/cxx_supportlib/WatchdogLauncher.cpp +1 -1
  325. data/src/cxx_supportlib/WatchdogLauncher.h +1 -1
  326. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +1 -1
  327. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +1 -1
  328. data/src/cxx_supportlib/WrapperRegistry/Entry.h +1 -1
  329. data/src/cxx_supportlib/WrapperRegistry/Registry.h +1 -1
  330. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  331. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  332. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  333. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  334. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
  335. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
  336. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  337. data/src/cxx_supportlib/oxt/implementation.cpp +1 -1
  338. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  340. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  342. data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
  343. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  344. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  345. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +1 -1
  346. data/src/cxx_supportlib/vendor-copy/libuv/AUTHORS +353 -3
  347. data/src/cxx_supportlib/vendor-copy/libuv/ChangeLog +3981 -2
  348. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE +1 -28
  349. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-docs +396 -0
  350. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-extra +36 -0
  351. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.am +275 -58
  352. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.in +4380 -2125
  353. data/src/cxx_supportlib/vendor-copy/libuv/aclocal.m4 +425 -221
  354. data/src/cxx_supportlib/vendor-copy/libuv/ar-lib +30 -10
  355. data/src/cxx_supportlib/vendor-copy/libuv/compile +31 -14
  356. data/src/cxx_supportlib/vendor-copy/libuv/config.guess +1084 -690
  357. data/src/cxx_supportlib/vendor-copy/libuv/config.sub +1844 -1297
  358. data/src/cxx_supportlib/vendor-copy/libuv/configure +6935 -3664
  359. data/src/cxx_supportlib/vendor-copy/libuv/configure.ac +43 -19
  360. data/src/cxx_supportlib/vendor-copy/libuv/depcomp +12 -11
  361. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-darwin.h → uv/darwin.h} +3 -3
  362. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-errno.h → uv/errno.h} +119 -60
  363. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-linux.h → uv/linux.h} +1 -1
  364. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/os390.h +33 -0
  365. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/posix.h +31 -0
  366. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-threadpool.h → uv/threadpool.h} +1 -1
  367. data/src/cxx_supportlib/vendor-copy/libuv/include/{tree.h → uv/tree.h} +3 -250
  368. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-unix.h → uv/unix.h} +186 -60
  369. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-version.h → uv/version.h} +3 -3
  370. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/win.h +703 -0
  371. data/src/cxx_supportlib/vendor-copy/libuv/include/uv.h +528 -40
  372. data/src/cxx_supportlib/vendor-copy/libuv/install-sh +110 -70
  373. data/src/cxx_supportlib/vendor-copy/libuv/libuv-static.pc.in +12 -0
  374. data/src/cxx_supportlib/vendor-copy/libuv/libuv.pc.in +4 -2
  375. data/src/cxx_supportlib/vendor-copy/libuv/ltmain.sh +995 -619
  376. data/src/cxx_supportlib/vendor-copy/libuv/m4/ax_pthread.m4 +485 -0
  377. data/src/cxx_supportlib/vendor-copy/libuv/m4/libtool.m4 +438 -289
  378. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-flags.m4 +21 -4
  379. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-versions.m4 +7 -0
  380. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltoptions.m4 +69 -39
  381. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltsugar.m4 +1 -1
  382. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltversion.m4 +7 -6
  383. data/src/cxx_supportlib/vendor-copy/libuv/m4/lt~obsolete.m4 +2 -2
  384. data/src/cxx_supportlib/vendor-copy/libuv/missing +55 -34
  385. data/src/cxx_supportlib/vendor-copy/libuv/src/fs-poll.c +52 -20
  386. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.c +560 -0
  387. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.h +31 -0
  388. data/src/cxx_supportlib/vendor-copy/libuv/src/inet.c +5 -16
  389. data/src/cxx_supportlib/vendor-copy/libuv/src/queue.h +68 -86
  390. data/src/cxx_supportlib/vendor-copy/libuv/src/random.c +123 -0
  391. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.c +38 -0
  392. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.h +39 -0
  393. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.c +52 -0
  394. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.h +27 -0
  395. data/src/cxx_supportlib/vendor-copy/libuv/src/thread-common.c +175 -0
  396. data/src/cxx_supportlib/vendor-copy/libuv/src/threadpool.c +172 -57
  397. data/src/cxx_supportlib/vendor-copy/libuv/src/{unix/timer.c → timer.c} +57 -29
  398. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix-common.c +89 -0
  399. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix.c +418 -256
  400. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/async.c +168 -129
  401. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-ifaddrs.c +163 -0
  402. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-proctitle.c +99 -0
  403. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/core.c +1312 -378
  404. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/cygwin.c +93 -0
  405. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-proctitle.c +18 -32
  406. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-stub.h +97 -0
  407. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-syscalls.h +17 -0
  408. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin.c +41 -139
  409. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/dl.c +1 -1
  410. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/freebsd.c +75 -235
  411. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fs.c +1308 -299
  412. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fsevents.c +150 -148
  413. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getaddrinfo.c +58 -8
  414. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getnameinfo.c +3 -2
  415. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/haiku.c +172 -0
  416. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/hurd.c +172 -0
  417. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/ibmi.c +542 -0
  418. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/internal.h +297 -106
  419. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/kqueue.c +325 -94
  420. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux.c +2708 -0
  421. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop-watcher.c +11 -11
  422. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop.c +105 -24
  423. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/netbsd.c +51 -157
  424. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-fsevents.c +42 -0
  425. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-proctitle.c +45 -0
  426. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/openbsd.c +42 -183
  427. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-proctitle.c +136 -0
  428. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.c +536 -0
  429. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.h +75 -0
  430. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390.c +1070 -0
  431. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pipe.c +324 -55
  432. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/poll.c +58 -11
  433. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-hrtime.c +36 -0
  434. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-poll.c +385 -0
  435. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/process.c +795 -248
  436. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/procfs-exepath.c +45 -0
  437. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/proctitle.c +77 -22
  438. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/qnx.c +142 -0
  439. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-devurandom.c +93 -0
  440. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getentropy.c +57 -0
  441. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getrandom.c +86 -0
  442. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-sysctl-linux.c +99 -0
  443. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/signal.c +147 -39
  444. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/stream.c +426 -474
  445. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sunos.c +240 -98
  446. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-loadavg.c +36 -0
  447. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-memory.c +42 -0
  448. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tcp.c +402 -91
  449. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/thread.c +497 -145
  450. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tty.c +269 -45
  451. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/udp.c +695 -165
  452. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.c +463 -61
  453. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.h +248 -44
  454. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-data-getter-setters.c +119 -0
  455. data/src/cxx_supportlib/vendor-copy/libuv/tsansupp.txt +2 -0
  456. data/src/cxx_supportlib/vendor-modified/libev/Changes +109 -0
  457. data/src/cxx_supportlib/vendor-modified/libev/Makefile.am +2 -1
  458. data/src/cxx_supportlib/vendor-modified/libev/Makefile.in +47 -33
  459. data/src/cxx_supportlib/vendor-modified/libev/README +2 -1
  460. data/src/cxx_supportlib/vendor-modified/libev/aclocal.m4 +1653 -1224
  461. data/src/cxx_supportlib/vendor-modified/libev/config.guess +376 -316
  462. data/src/cxx_supportlib/vendor-modified/libev/config.h.in +13 -2
  463. data/src/cxx_supportlib/vendor-modified/libev/config.sub +156 -154
  464. data/src/cxx_supportlib/vendor-modified/libev/configure +1431 -940
  465. data/src/cxx_supportlib/vendor-modified/libev/configure.ac +3 -3
  466. data/src/cxx_supportlib/vendor-modified/libev/depcomp +5 -5
  467. data/src/cxx_supportlib/vendor-modified/libev/ev++.h +109 -107
  468. data/src/cxx_supportlib/vendor-modified/libev/ev.c +807 -319
  469. data/src/cxx_supportlib/vendor-modified/libev/ev.h +111 -105
  470. data/src/cxx_supportlib/vendor-modified/libev/ev_epoll.c +42 -29
  471. data/src/cxx_supportlib/vendor-modified/libev/ev_iouring.c +694 -0
  472. data/src/cxx_supportlib/vendor-modified/libev/ev_kqueue.c +15 -9
  473. data/src/cxx_supportlib/vendor-modified/libev/ev_linuxaio.c +620 -0
  474. data/src/cxx_supportlib/vendor-modified/libev/ev_poll.c +19 -14
  475. data/src/cxx_supportlib/vendor-modified/libev/ev_port.c +8 -5
  476. data/src/cxx_supportlib/vendor-modified/libev/ev_select.c +6 -6
  477. data/src/cxx_supportlib/vendor-modified/libev/ev_vars.h +48 -3
  478. data/src/cxx_supportlib/vendor-modified/libev/ev_win32.c +2 -2
  479. data/src/cxx_supportlib/vendor-modified/libev/ev_wrap.h +72 -0
  480. data/src/cxx_supportlib/vendor-modified/libev/install-sh +23 -13
  481. data/src/cxx_supportlib/vendor-modified/libev/libev.m4 +6 -1
  482. data/src/cxx_supportlib/vendor-modified/libev/ltmain.sh +3581 -1993
  483. data/src/cxx_supportlib/vendor-modified/libev/missing +8 -8
  484. data/src/cxx_supportlib/vendor-modified/libev/mkinstalldirs +3 -3
  485. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +1 -1
  486. data/src/helper-scripts/backtrace-sanitizer.rb +1 -1
  487. data/src/helper-scripts/crash-watch.rb +1 -1
  488. data/src/helper-scripts/download_binaries/extconf.rb +1 -1
  489. data/src/helper-scripts/meteor-loader.rb +1 -1
  490. data/src/helper-scripts/node-loader.js +1 -1
  491. data/src/helper-scripts/prespawn +1 -1
  492. data/src/helper-scripts/rack-loader.rb +1 -1
  493. data/src/helper-scripts/rack-preloader.rb +1 -1
  494. data/src/helper-scripts/wsgi-loader.py +1 -1
  495. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +1 -1
  496. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +1 -1
  497. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +1 -1
  498. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +1 -1
  499. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +1 -1
  500. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +1 -1
  501. data/src/nginx_module/Configuration.c +1 -1
  502. data/src/nginx_module/Configuration.h +1 -1
  503. data/src/nginx_module/ContentHandler.c +1 -1
  504. data/src/nginx_module/ContentHandler.h +1 -1
  505. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +1 -1
  506. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  507. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +1 -1
  508. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +1 -1
  509. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +1 -1
  510. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  511. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +1 -1
  512. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +1 -1
  513. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +1 -1
  514. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  515. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +1 -1
  516. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  517. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +1 -1
  518. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  519. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +1 -1
  520. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  521. data/src/nginx_module/StaticContentHandler.c +1 -1
  522. data/src/nginx_module/StaticContentHandler.h +1 -1
  523. data/src/nginx_module/ngx_http_passenger_module.c +1 -1
  524. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  525. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +1 -1
  526. data/src/ruby_native_extension/extconf.rb +1 -1
  527. data/src/ruby_native_extension/passenger_native_support.c +1 -1
  528. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +1 -1
  529. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +1 -1
  530. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +1 -1
  531. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -12
  532. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
  533. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -1
  534. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +1 -1
  535. data/src/ruby_supportlib/phusion_passenger/common_library.rb +8 -10
  536. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +1 -1
  537. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +1 -1
  538. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +1 -1
  539. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +1 -1
  540. data/src/ruby_supportlib/phusion_passenger/config/command.rb +1 -1
  541. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +1 -1
  542. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +1 -1
  543. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +1 -1
  544. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
  545. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
  546. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +1 -1
  547. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +1 -1
  548. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  549. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +1 -1
  550. data/src/ruby_supportlib/phusion_passenger/config/main.rb +1 -1
  551. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +3 -2
  552. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +6 -1
  553. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +1 -1
  554. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +1 -1
  555. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +1 -1
  556. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +1 -1
  557. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +1 -1
  558. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +1 -1
  559. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
  560. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +1 -1
  561. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +1 -1
  562. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +1 -1
  563. data/src/ruby_supportlib/phusion_passenger/message_client.rb +1 -1
  564. data/src/ruby_supportlib/phusion_passenger/native_support.rb +1 -1
  565. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +1 -1
  566. data/src/ruby_supportlib/phusion_passenger/packaging.rb +4 -3
  567. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -1
  568. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +1 -1
  569. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +1 -1
  570. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +195 -11
  571. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +1 -1
  572. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +1 -1
  573. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +1 -1
  574. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +1 -1
  575. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +1 -1
  576. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +1 -1
  577. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
  578. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +1 -1
  579. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +1 -1
  580. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +1 -1
  581. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +1 -1
  582. data/src/ruby_supportlib/phusion_passenger/plugin.rb +1 -1
  583. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +1 -1
  584. data/src/ruby_supportlib/phusion_passenger/public_api.rb +1 -1
  585. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +1 -1
  586. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +1 -1
  587. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +1 -1
  588. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +1 -1
  589. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -7
  590. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +1 -1
  591. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +1 -1
  592. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +1 -1
  593. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +1 -1
  594. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +1 -1
  595. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +1 -1
  596. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +1 -1
  597. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +1 -1
  598. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +1 -1
  599. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +1 -1
  600. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +2 -2
  601. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +4 -8
  602. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
  603. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +1 -1
  604. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +1 -1
  605. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +1 -1
  606. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +1 -1
  607. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +1 -1
  608. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +1 -1
  609. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +1 -1
  610. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +1 -1
  611. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +1 -1
  612. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
  613. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +1 -1
  614. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  615. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +3 -13
  616. data/src/ruby_supportlib/phusion_passenger/utils.rb +1 -1
  617. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
  618. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
  619. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  620. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +1 -1
  621. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
  622. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
  623. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +8 -6
  624. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +4 -3
  625. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +6 -4
  626. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +395 -579
  627. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  628. data/src/schema_printer/SchemaPrinterMain.cpp +1 -1
  629. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +1 -1
  630. metadata +69 -32
  631. data/doc/DeveloperQuickstart.md +0 -70
  632. data/src/README.md +0 -7
  633. data/src/cxx_supportlib/vendor-copy/libuv/README.md +0 -245
  634. data/src/cxx_supportlib/vendor-copy/libuv/checksparse.sh +0 -234
  635. data/src/cxx_supportlib/vendor-copy/libuv/common.gypi +0 -210
  636. data/src/cxx_supportlib/vendor-copy/libuv/gyp_uv.py +0 -93
  637. data/src/cxx_supportlib/vendor-copy/libuv/include/android-ifaddrs.h +0 -54
  638. data/src/cxx_supportlib/vendor-copy/libuv/include/pthread-fixes.h +0 -72
  639. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/android-ifaddrs.c +0 -703
  640. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/atomic-ops.h +0 -77
  641. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-core.c +0 -899
  642. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-inotify.c +0 -285
  643. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.c +0 -471
  644. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.h +0 -158
  645. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pthread-fixes.c +0 -104
  646. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/spinlock.h +0 -53
  647. data/src/cxx_supportlib/vendor-copy/libuv/uv.gyp +0 -508
  648. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-aix.h → uv/aix.h} +0 -0
  649. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-bsd.h → uv/bsd.h} +0 -0
  650. /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
- #include <CoreFoundation/CFRunLoop.h>
49
- #include <CoreServices/CoreServices.h>
50
-
51
- /* These are macros to avoid "initializer element is not constant" errors
52
- * with old versions of gcc.
53
- */
54
- #define kFSEventsModified (kFSEventStreamEventFlagItemFinderInfoMod | \
55
- kFSEventStreamEventFlagItemModified | \
56
- kFSEventStreamEventFlagItemInodeMetaMod | \
57
- kFSEventStreamEventFlagItemChangeOwner | \
58
- kFSEventStreamEventFlagItemXattrMod)
59
-
60
- #define kFSEventsRenamed (kFSEventStreamEventFlagItemCreated | \
61
- kFSEventStreamEventFlagItemRemoved | \
62
- kFSEventStreamEventFlagItemRenamed)
63
-
64
- #define kFSEventsSystem (kFSEventStreamEventFlagUserDropped | \
65
- kFSEventStreamEventFlagKernelDropped | \
66
- kFSEventStreamEventFlagEventIdsWrapped | \
67
- kFSEventStreamEventFlagHistoryDone | \
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
- QUEUE member;
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
- QUEUE member;
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
- void* fsevent_handles[2];
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 Boolean (*pFSEventStreamStart)(FSEventStreamRef);
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
- QUEUE events; \
156
- QUEUE* q; \
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
- QUEUE_MOVE(&(handle)->cf_events, &events); \
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 (!QUEUE_EMPTY(&events)) { \
168
- q = QUEUE_HEAD(&events); \
169
- event = QUEUE_DATA(q, uv__fsevents_event_t, member); \
170
- QUEUE_REMOVE(q); \
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
- QUEUE* events,
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
- QUEUE_ADD(&handle->cf_events, events);
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(ConstFSEventStreamRef streamRef,
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
- QUEUE* q;
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
- QUEUE head;
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
- QUEUE_FOREACH(q, &state->fsevent_handles) {
243
- handle = QUEUE_DATA(q, uv_fs_event_t, cf_member);
244
- QUEUE_INIT(&head);
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 (eventFlags[i] & kFSEventsSystem)
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 (strncmp(path, handle->realpath, handle->realpath_len) != 0)
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 > 1 || *handle->realpath != '/') {
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
- /* Skip forward slash */
264
- if (*path != '\0') {
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 ((eventFlags[i] & kFSEventsModified) != 0 &&
296
- (eventFlags[i] & kFSEventsRenamed) == 0)
297
- event->events = UV_CHANGE;
298
- else
299
- event->events = UV_RENAME;
311
+ if (0 == (flags & kFSEventsRenamed)) {
312
+ if (0 != (flags & kFSEventsModified) ||
313
+ 0 == (flags & kFSEventStreamEventFlagItemIsDir))
314
+ event->events = UV_CHANGE;
315
+ }
300
316
 
301
- QUEUE_INSERT_TAIL(&head, &event->member);
317
+ uv__queue_insert_tail(&head, &event->member);
302
318
  }
303
319
 
304
- if (!QUEUE_EMPTY(&head))
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(uv_loop_t* loop, CFArrayRef paths) {
313
- uv__cf_loop_state_t* state;
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.version = 0;
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 = loop->cf_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 -EMFILE;
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(uv_loop_t* loop) {
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(uv_fs_event_t* handle,
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
- uv__cf_loop_state_t* state;
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(handle->loop);
428
+ uv__fsevents_destroy_stream(state);
426
429
 
427
430
  /* Any failure below will be a memory failure */
428
- err = -ENOMEM;
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 = QUEUE_NEXT(q);
445
+ q = uv__queue_next(q);
443
446
  assert(q != &state->fsevent_handles);
444
- curr = QUEUE_DATA(q, uv_fs_event_t, cf_member);
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 = -ENOMEM;
465
+ err = UV_ENOMEM;
463
466
  goto final;
464
467
  }
465
- err = uv__fsevents_create_stream(handle->loop, cf_paths);
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
- QUEUE_FOREACH(q, &state->fsevent_handles) {
483
- curr = QUEUE_DATA(q, uv_fs_event_t, cf_member);
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 = -ENOSYS;
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 = -ENOENT;
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 attr_storage;
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 -ENOMEM;
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
- QUEUE_INIT(&loop->cf_signals);
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
- QUEUE_INIT(&state->fsevent_handles);
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 = -ENOMEM;
624
+ err = UV_ENOMEM;
625
625
  goto fail_signal_source_create;
626
626
  }
627
627
 
628
- /* In the unlikely event that pthread_attr_init() fails, create the thread
629
- * with the default stack size. We'll use a little more address space but
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 != NULL)
637
- if (pthread_attr_setstacksize(attr, 4 * PTHREAD_STACK_MIN))
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 = -pthread_create(&loop->cf_thread, attr, uv__cf_loop_runner, loop);
637
+ err = UV__ERR(pthread_create(&loop->cf_thread, &attr, uv__cf_loop_runner, loop));
644
638
 
645
- if (attr != NULL)
646
- pthread_attr_destroy(attr);
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
- QUEUE* q;
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 (!QUEUE_EMPTY(&loop->cf_signals)) {
694
- q = QUEUE_HEAD(&loop->cf_signals);
695
- s = QUEUE_DATA(q, uv__cf_loop_signal_t, member);
696
- QUEUE_REMOVE(q);
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
- QUEUE* item;
739
- QUEUE split_head;
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
- QUEUE_MOVE(&loop->cf_signals, &split_head);
742
+ uv__queue_move(&loop->cf_signals, &split_head);
747
743
  uv_mutex_unlock(&loop->cf_mutex);
748
744
 
749
- while (!QUEUE_EMPTY(&split_head)) {
750
- item = QUEUE_HEAD(&split_head);
751
- QUEUE_REMOVE(item);
745
+ while (!uv__queue_empty(&split_head)) {
746
+ item = uv__queue_head(&split_head);
747
+ uv__queue_remove(item);
752
748
 
753
- s = QUEUE_DATA(item, uv__cf_loop_signal_t, member);
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(s->handle, s->type);
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 -ENOMEM;
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
- QUEUE_INSERT_TAIL(&loop->cf_signals, &item->member);
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
- handle->realpath = realpath(handle->path, NULL);
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 -errno;
807
+ return UV_ENOMEM;
806
808
  handle->realpath_len = strlen(handle->realpath);
807
809
 
808
810
  /* Initialize event queue */
809
- QUEUE_INIT(&handle->cf_events);
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 = -ENOMEM;
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 |= UV__HANDLE_INTERNAL;
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
- QUEUE_INSERT_TAIL(&state->fsevent_handles, &handle->cf_member);
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 -EINVAL;
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
- QUEUE_REMOVE(&handle->cf_member);
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 -err;
885
+ return UV__ERR(err);
884
886
 
885
887
  /* Wait for deinitialization */
886
888
  uv_sem_wait(&state->fsevent_sem);