passenger 6.1.8 → 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 (662) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +56 -2
  3. data/CONTRIBUTING.md +7 -311
  4. data/CONTRIBUTORS +1 -0
  5. data/LICENSE +1 -1
  6. data/README.md +2 -2
  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 +40 -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 +1488 -666
  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 +3 -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 +3 -1
  36. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +3 -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 +6 -2
  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/runner +2 -0
  45. data/dev/upgrading_libuv.sh +16 -0
  46. data/doc/BasicArchitectureOverview.md +55 -0
  47. data/doc/BuildCaching.md +23 -0
  48. data/doc/BuildSystem.md +49 -0
  49. data/doc/DebuggingAndStressTesting.md +2 -0
  50. data/doc/DesignAspects/LimitedGemDependencies.md +1 -0
  51. data/doc/DevEnvironmentSetup.md +46 -0
  52. data/doc/DevHandbook.md +28 -0
  53. data/doc/Packaging.md +1 -1
  54. data/doc/RunningTests.md +88 -0
  55. data/doc/{TempFileHandling.md → SecureTempFileHandling.md} +1 -1
  56. data/doc/{CxxTestingGuide.md → WritingCxxTests.md} +1 -20
  57. data/src/agent/AgentMain.cpp +1 -1
  58. data/src/agent/Core/ApiServer.h +1 -1
  59. data/src/agent/Core/ApplicationPool/AbstractSession.h +1 -1
  60. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +1 -1
  61. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +1 -1
  62. data/src/agent/Core/ApplicationPool/Common.h +1 -1
  63. data/src/agent/Core/ApplicationPool/Context.h +1 -1
  64. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +1 -1
  65. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +1 -1
  66. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +1 -1
  67. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +1 -1
  68. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  69. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
  70. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +1 -1
  71. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +1 -1
  72. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -1
  73. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +1 -1
  74. data/src/agent/Core/ApplicationPool/Group.h +1 -1
  75. data/src/agent/Core/ApplicationPool/Implementation.cpp +1 -1
  76. data/src/agent/Core/ApplicationPool/Options.h +1 -1
  77. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +1 -1
  78. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
  79. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +1 -1
  80. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +1 -1
  81. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +1 -1
  82. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +1 -1
  83. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
  84. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  85. data/src/agent/Core/ApplicationPool/Pool.h +1 -1
  86. data/src/agent/Core/ApplicationPool/Process.cpp +1 -1
  87. data/src/agent/Core/ApplicationPool/Process.h +1 -1
  88. data/src/agent/Core/ApplicationPool/Session.h +1 -1
  89. data/src/agent/Core/ApplicationPool/Socket.h +1 -1
  90. data/src/agent/Core/ApplicationPool/TestSession.h +1 -1
  91. data/src/agent/Core/Config.h +3 -2
  92. data/src/agent/Core/ConfigChange.cpp +1 -1
  93. data/src/agent/Core/ConfigChange.h +1 -1
  94. data/src/agent/Core/Controller/AppResponse.h +1 -1
  95. data/src/agent/Core/Controller/BufferBody.cpp +1 -1
  96. data/src/agent/Core/Controller/CheckoutSession.cpp +8 -5
  97. data/src/agent/Core/Controller/Client.h +1 -1
  98. data/src/agent/Core/Controller/Config.cpp +1 -1
  99. data/src/agent/Core/Controller/Config.h +2 -2
  100. data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
  101. data/src/agent/Core/Controller/Hooks.cpp +12 -9
  102. data/src/agent/Core/Controller/Implementation.cpp +1 -1
  103. data/src/agent/Core/Controller/InitRequest.cpp +1 -1
  104. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -1
  105. data/src/agent/Core/Controller/InternalUtils.cpp +1 -1
  106. data/src/agent/Core/Controller/Miscellaneous.cpp +1 -1
  107. data/src/agent/Core/Controller/Request.h +1 -1
  108. data/src/agent/Core/Controller/SendRequest.cpp +1 -1
  109. data/src/agent/Core/Controller/StateInspection.cpp +1 -1
  110. data/src/agent/Core/Controller/TurboCaching.h +1 -1
  111. data/src/agent/Core/Controller.h +1 -1
  112. data/src/agent/Core/CoreMain.cpp +1 -1
  113. data/src/agent/Core/OptionParser.h +1 -1
  114. data/src/agent/Core/ResponseCache.h +1 -1
  115. data/src/agent/Core/SecurityUpdateChecker.h +1 -1
  116. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +1 -1
  117. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +1 -1
  118. data/src/agent/Core/SpawningKit/Config.h +1 -1
  119. data/src/agent/Core/SpawningKit/Context.h +1 -1
  120. data/src/agent/Core/SpawningKit/DirectSpawner.h +1 -1
  121. data/src/agent/Core/SpawningKit/DummySpawner.h +1 -1
  122. data/src/agent/Core/SpawningKit/ErrorRenderer.h +1 -1
  123. data/src/agent/Core/SpawningKit/Exceptions.h +63 -2
  124. data/src/agent/Core/SpawningKit/Factory.h +1 -1
  125. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
  126. data/src/agent/Core/SpawningKit/Handshake/Perform.h +3 -2
  127. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  128. data/src/agent/Core/SpawningKit/Handshake/Session.h +1 -1
  129. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +1 -1
  130. data/src/agent/Core/SpawningKit/Journey.h +1 -1
  131. data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
  132. data/src/agent/Core/SpawningKit/README.md +3 -3
  133. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +1 -1
  134. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +1 -1
  135. data/src/agent/Core/SpawningKit/Result.h +1 -1
  136. data/src/agent/Core/SpawningKit/SmartSpawner.h +17 -17
  137. data/src/agent/Core/SpawningKit/Spawner.h +1 -1
  138. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -1
  139. data/src/agent/Core/TelemetryCollector.h +1 -1
  140. data/src/agent/ExecHelper/ExecHelperMain.cpp +1 -1
  141. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +1 -1
  142. data/src/agent/MainFunctions.h +1 -1
  143. data/src/agent/Shared/ApiAccountUtils.h +4 -3
  144. data/src/agent/Shared/ApiServerUtils.h +15 -11
  145. data/src/agent/Shared/ApplicationPoolApiKey.h +1 -1
  146. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +1 -1
  147. data/src/agent/Shared/Fundamentals/AbortHandler.h +1 -1
  148. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
  149. data/src/agent/Shared/Fundamentals/Initialization.h +1 -1
  150. data/src/agent/Shared/Fundamentals/Utils.cpp +1 -1
  151. data/src/agent/Shared/Fundamentals/Utils.h +1 -1
  152. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +1 -1
  153. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -1
  154. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +1 -1
  155. data/src/agent/Watchdog/{AgentWatcher.cpp → AgentWatcher.h} +28 -1
  156. data/src/agent/Watchdog/ApiServer.h +25 -1
  157. data/src/agent/Watchdog/Config.h +2 -2
  158. data/src/agent/Watchdog/{CoreWatcher.cpp → CoreWatcher.h} +18 -1
  159. data/src/agent/Watchdog/{InstanceDirToucher.cpp → InstanceDirToucher.h} +20 -1
  160. data/src/agent/Watchdog/WatchdogMain.cpp +11 -77
  161. data/src/agent/Watchdog/WorkingObjects.h +108 -0
  162. data/src/apache2_module/Bucket.cpp +1 -1
  163. data/src/apache2_module/Bucket.h +1 -1
  164. data/src/apache2_module/CBindings.cpp +1 -1
  165. data/src/apache2_module/Config.cpp +1 -1
  166. data/src/apache2_module/Config.h +1 -1
  167. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +104 -104
  168. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  169. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +1 -1
  170. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +1 -1
  171. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +1 -1
  172. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +1 -1
  173. data/src/apache2_module/ConfigGeneral/Common.h +1 -1
  174. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +1 -1
  175. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +1 -1
  176. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +1 -1
  177. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +1 -1
  178. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +1 -1
  179. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +1 -1
  180. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +1 -1
  181. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
  182. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +1 -1
  183. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +1 -1
  184. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +1 -1
  185. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  186. data/src/apache2_module/DirectoryMapper.h +1 -1
  187. data/src/apache2_module/Hooks.cpp +8 -2
  188. data/src/apache2_module/Hooks.h +1 -1
  189. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +1 -1
  190. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
  191. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +1 -1
  192. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  193. data/src/apache2_module/Utils.h +1 -1
  194. data/src/apache2_module/mod_passenger.c +1 -1
  195. data/src/cxx_supportlib/Algorithms/Hasher.cpp +1 -1
  196. data/src/cxx_supportlib/Algorithms/Hasher.h +1 -1
  197. data/src/cxx_supportlib/Algorithms/MovingAverage.h +1 -1
  198. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +1 -1
  199. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +1 -1
  200. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +1 -1
  201. data/src/cxx_supportlib/AppTypeDetector/Detector.h +1 -1
  202. data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
  203. data/src/cxx_supportlib/BackgroundEventLoop.h +1 -1
  204. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +1 -1
  205. data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
  206. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
  207. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +1 -1
  208. data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +1 -3
  209. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +3 -3
  210. data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
  211. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +1 -1
  212. data/src/cxx_supportlib/ConfigKit/Store.h +1 -1
  213. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +1 -1
  214. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +1 -1
  215. data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
  216. data/src/cxx_supportlib/ConfigKit/Utils.h +1 -1
  217. data/src/cxx_supportlib/Constants.h +2 -2
  218. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +1 -1
  219. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +1 -1
  220. data/src/cxx_supportlib/DataStructures/LString.cpp +1 -1
  221. data/src/cxx_supportlib/DataStructures/LString.h +1 -1
  222. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
  223. data/src/cxx_supportlib/DataStructures/StringMap.h +1 -1
  224. data/src/cxx_supportlib/Exceptions.cpp +1 -1
  225. data/src/cxx_supportlib/Exceptions.h +1 -1
  226. data/src/cxx_supportlib/FileDescriptor.h +1 -1
  227. data/src/cxx_supportlib/FileTools/FileManip.cpp +1 -1
  228. data/src/cxx_supportlib/FileTools/FileManip.h +1 -1
  229. data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
  230. data/src/cxx_supportlib/FileTools/PathManip.h +1 -1
  231. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +1 -1
  232. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +1 -1
  233. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +1 -1
  234. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +1 -1
  235. data/src/cxx_supportlib/Hooks.h +1 -1
  236. data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
  237. data/src/cxx_supportlib/IOTools/IOUtils.cpp +12 -27
  238. data/src/cxx_supportlib/IOTools/IOUtils.h +1 -1
  239. data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
  240. data/src/cxx_supportlib/IOTools/MessageSerialization.h +1 -1
  241. data/src/cxx_supportlib/InstanceDirectory.h +1 -1
  242. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +1 -1
  243. data/src/cxx_supportlib/JsonTools/Autocast.h +1 -1
  244. data/src/cxx_supportlib/JsonTools/CBindings.cpp +1 -1
  245. data/src/cxx_supportlib/JsonTools/CBindings.h +1 -1
  246. data/src/cxx_supportlib/JsonTools/JsonUtils.h +1 -1
  247. data/src/cxx_supportlib/LoggingKit/Assert.h +1 -1
  248. data/src/cxx_supportlib/LoggingKit/Config.h +2 -1
  249. data/src/cxx_supportlib/LoggingKit/Context.h +1 -1
  250. data/src/cxx_supportlib/LoggingKit/Forward.h +1 -1
  251. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +11 -1
  252. data/src/cxx_supportlib/LoggingKit/Logging.h +1 -1
  253. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +1 -1
  254. data/src/cxx_supportlib/LveLoggingDecorator.h +1 -1
  255. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +1 -1
  256. data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
  257. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  258. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  259. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +1 -1
  260. data/src/cxx_supportlib/ProcessManagement/Ruby.h +1 -1
  261. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +1 -1
  262. data/src/cxx_supportlib/ProcessManagement/Spawn.h +1 -1
  263. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
  264. data/src/cxx_supportlib/ProcessManagement/Utils.h +1 -1
  265. data/src/cxx_supportlib/RandomGenerator.h +1 -1
  266. data/src/cxx_supportlib/ResourceLocator.h +1 -1
  267. data/src/cxx_supportlib/SafeLibev.h +1 -1
  268. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +9 -27
  269. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -2
  270. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +1 -1
  271. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +4 -1
  272. data/src/cxx_supportlib/ServerKit/Channel.h +1 -1
  273. data/src/cxx_supportlib/ServerKit/Client.h +1 -1
  274. data/src/cxx_supportlib/ServerKit/ClientRef.h +1 -1
  275. data/src/cxx_supportlib/ServerKit/Config.h +1 -1
  276. data/src/cxx_supportlib/ServerKit/Context.h +1 -1
  277. data/src/cxx_supportlib/ServerKit/CookieUtils.h +1 -1
  278. data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
  279. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +1 -1
  280. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +1 -1
  281. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +54 -2
  282. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +1 -1
  283. data/src/cxx_supportlib/ServerKit/HeaderTable.h +1 -1
  284. data/src/cxx_supportlib/ServerKit/Hooks.h +1 -1
  285. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  286. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +1 -1
  287. data/src/cxx_supportlib/ServerKit/HttpClient.h +1 -1
  288. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
  289. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
  290. data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
  291. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +1 -1
  292. data/src/cxx_supportlib/ServerKit/HttpServer.h +1 -1
  293. data/src/cxx_supportlib/ServerKit/Implementation.cpp +1 -1
  294. data/src/cxx_supportlib/ServerKit/Server.h +8 -23
  295. data/src/cxx_supportlib/StaticString.h +1 -1
  296. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  297. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +1 -1
  298. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +1 -1
  299. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +1 -1
  300. data/src/cxx_supportlib/StrIntTools/StringScanning.h +1 -1
  301. data/src/cxx_supportlib/StrIntTools/Template.h +1 -1
  302. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +1 -1
  303. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  304. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +1 -1
  305. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +1 -1
  306. data/src/cxx_supportlib/SystemTools/SystemTime.h +1 -1
  307. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +1 -1
  308. data/src/cxx_supportlib/SystemTools/UserDatabase.h +1 -1
  309. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +1 -1
  310. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +1 -1
  311. data/src/cxx_supportlib/Utils/BlockingQueue.h +1 -1
  312. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +1 -1
  313. data/src/cxx_supportlib/Utils/CachedFileStat.h +1 -1
  314. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +1 -1
  315. data/src/cxx_supportlib/Utils/ClassUtils.h +1 -1
  316. data/src/cxx_supportlib/Utils/Curl.h +1 -1
  317. data/src/cxx_supportlib/Utils/FastStringStream.h +1 -1
  318. data/src/cxx_supportlib/Utils/FileChangeChecker.h +1 -1
  319. data/src/cxx_supportlib/Utils/HttpConstants.h +1 -1
  320. data/src/cxx_supportlib/Utils/IniFile.h +1 -1
  321. data/src/cxx_supportlib/Utils/MessagePassing.h +1 -1
  322. data/src/cxx_supportlib/Utils/OptionParsing.h +1 -1
  323. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +1 -1
  324. data/src/cxx_supportlib/Utils/ScopeGuard.h +1 -1
  325. data/src/cxx_supportlib/Utils/Socket.cpp +67 -0
  326. data/src/cxx_supportlib/Utils/Socket.h +35 -0
  327. data/src/cxx_supportlib/Utils/SpeedMeter.h +1 -1
  328. data/src/cxx_supportlib/Utils/Timer.h +1 -1
  329. data/src/cxx_supportlib/Utils/VariantMap.h +1 -1
  330. data/src/cxx_supportlib/Utils.cpp +1 -1
  331. data/src/cxx_supportlib/Utils.h +1 -1
  332. data/src/cxx_supportlib/WatchdogLauncher.cpp +1 -1
  333. data/src/cxx_supportlib/WatchdogLauncher.h +1 -1
  334. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +1 -1
  335. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +1 -1
  336. data/src/cxx_supportlib/WrapperRegistry/Entry.h +1 -1
  337. data/src/cxx_supportlib/WrapperRegistry/Registry.h +1 -1
  338. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  340. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  342. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
  343. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
  344. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  345. data/src/cxx_supportlib/oxt/implementation.cpp +1 -1
  346. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  347. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  348. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  349. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  350. data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
  351. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  352. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  353. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +1 -1
  354. data/src/cxx_supportlib/vendor-copy/libuv/AUTHORS +353 -3
  355. data/src/cxx_supportlib/vendor-copy/libuv/ChangeLog +3981 -2
  356. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE +1 -28
  357. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-docs +396 -0
  358. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-extra +36 -0
  359. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.am +275 -58
  360. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.in +4380 -2125
  361. data/src/cxx_supportlib/vendor-copy/libuv/aclocal.m4 +425 -221
  362. data/src/cxx_supportlib/vendor-copy/libuv/ar-lib +30 -10
  363. data/src/cxx_supportlib/vendor-copy/libuv/compile +31 -14
  364. data/src/cxx_supportlib/vendor-copy/libuv/config.guess +1084 -690
  365. data/src/cxx_supportlib/vendor-copy/libuv/config.sub +1844 -1297
  366. data/src/cxx_supportlib/vendor-copy/libuv/configure +6935 -3664
  367. data/src/cxx_supportlib/vendor-copy/libuv/configure.ac +43 -19
  368. data/src/cxx_supportlib/vendor-copy/libuv/depcomp +12 -11
  369. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-darwin.h → uv/darwin.h} +3 -3
  370. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-errno.h → uv/errno.h} +119 -60
  371. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-linux.h → uv/linux.h} +1 -1
  372. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/os390.h +33 -0
  373. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/posix.h +31 -0
  374. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-threadpool.h → uv/threadpool.h} +1 -1
  375. data/src/cxx_supportlib/vendor-copy/libuv/include/{tree.h → uv/tree.h} +3 -250
  376. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-unix.h → uv/unix.h} +186 -60
  377. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-version.h → uv/version.h} +3 -3
  378. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/win.h +703 -0
  379. data/src/cxx_supportlib/vendor-copy/libuv/include/uv.h +528 -40
  380. data/src/cxx_supportlib/vendor-copy/libuv/install-sh +110 -70
  381. data/src/cxx_supportlib/vendor-copy/libuv/libuv-static.pc.in +12 -0
  382. data/src/cxx_supportlib/vendor-copy/libuv/libuv.pc.in +4 -2
  383. data/src/cxx_supportlib/vendor-copy/libuv/ltmain.sh +995 -619
  384. data/src/cxx_supportlib/vendor-copy/libuv/m4/ax_pthread.m4 +485 -0
  385. data/src/cxx_supportlib/vendor-copy/libuv/m4/libtool.m4 +438 -289
  386. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-flags.m4 +21 -4
  387. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-versions.m4 +7 -0
  388. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltoptions.m4 +69 -39
  389. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltsugar.m4 +1 -1
  390. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltversion.m4 +7 -6
  391. data/src/cxx_supportlib/vendor-copy/libuv/m4/lt~obsolete.m4 +2 -2
  392. data/src/cxx_supportlib/vendor-copy/libuv/missing +55 -34
  393. data/src/cxx_supportlib/vendor-copy/libuv/src/fs-poll.c +52 -20
  394. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.c +560 -0
  395. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.h +31 -0
  396. data/src/cxx_supportlib/vendor-copy/libuv/src/inet.c +5 -16
  397. data/src/cxx_supportlib/vendor-copy/libuv/src/queue.h +68 -86
  398. data/src/cxx_supportlib/vendor-copy/libuv/src/random.c +123 -0
  399. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.c +38 -0
  400. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.h +39 -0
  401. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.c +52 -0
  402. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.h +27 -0
  403. data/src/cxx_supportlib/vendor-copy/libuv/src/thread-common.c +175 -0
  404. data/src/cxx_supportlib/vendor-copy/libuv/src/threadpool.c +172 -57
  405. data/src/cxx_supportlib/vendor-copy/libuv/src/{unix/timer.c → timer.c} +57 -29
  406. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix-common.c +89 -0
  407. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix.c +418 -256
  408. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/async.c +168 -129
  409. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-ifaddrs.c +163 -0
  410. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-proctitle.c +99 -0
  411. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/core.c +1312 -378
  412. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/cygwin.c +93 -0
  413. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-proctitle.c +18 -32
  414. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-stub.h +97 -0
  415. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-syscalls.h +17 -0
  416. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin.c +41 -139
  417. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/dl.c +1 -1
  418. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/freebsd.c +75 -235
  419. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fs.c +1308 -299
  420. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fsevents.c +150 -148
  421. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getaddrinfo.c +58 -8
  422. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getnameinfo.c +3 -2
  423. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/haiku.c +172 -0
  424. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/hurd.c +172 -0
  425. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/ibmi.c +542 -0
  426. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/internal.h +297 -106
  427. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/kqueue.c +325 -94
  428. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux.c +2708 -0
  429. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop-watcher.c +11 -11
  430. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop.c +105 -24
  431. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/netbsd.c +51 -157
  432. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-fsevents.c +42 -0
  433. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-proctitle.c +45 -0
  434. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/openbsd.c +42 -183
  435. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-proctitle.c +136 -0
  436. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.c +536 -0
  437. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.h +75 -0
  438. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390.c +1070 -0
  439. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pipe.c +324 -55
  440. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/poll.c +58 -11
  441. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-hrtime.c +36 -0
  442. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-poll.c +385 -0
  443. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/process.c +795 -248
  444. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/procfs-exepath.c +45 -0
  445. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/proctitle.c +77 -22
  446. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/qnx.c +142 -0
  447. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-devurandom.c +93 -0
  448. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getentropy.c +57 -0
  449. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getrandom.c +86 -0
  450. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-sysctl-linux.c +99 -0
  451. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/signal.c +147 -39
  452. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/stream.c +426 -474
  453. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sunos.c +240 -98
  454. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-loadavg.c +36 -0
  455. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-memory.c +42 -0
  456. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tcp.c +402 -91
  457. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/thread.c +497 -145
  458. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tty.c +269 -45
  459. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/udp.c +695 -165
  460. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.c +463 -61
  461. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.h +248 -44
  462. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-data-getter-setters.c +119 -0
  463. data/src/cxx_supportlib/vendor-copy/libuv/tsansupp.txt +2 -0
  464. data/src/cxx_supportlib/vendor-modified/libev/Changes +109 -0
  465. data/src/cxx_supportlib/vendor-modified/libev/Makefile.am +2 -1
  466. data/src/cxx_supportlib/vendor-modified/libev/Makefile.in +47 -33
  467. data/src/cxx_supportlib/vendor-modified/libev/README +2 -1
  468. data/src/cxx_supportlib/vendor-modified/libev/aclocal.m4 +1653 -1224
  469. data/src/cxx_supportlib/vendor-modified/libev/config.guess +376 -316
  470. data/src/cxx_supportlib/vendor-modified/libev/config.h.in +13 -2
  471. data/src/cxx_supportlib/vendor-modified/libev/config.sub +156 -154
  472. data/src/cxx_supportlib/vendor-modified/libev/configure +1431 -940
  473. data/src/cxx_supportlib/vendor-modified/libev/configure.ac +3 -3
  474. data/src/cxx_supportlib/vendor-modified/libev/depcomp +5 -5
  475. data/src/cxx_supportlib/vendor-modified/libev/ev++.h +109 -107
  476. data/src/cxx_supportlib/vendor-modified/libev/ev.c +807 -319
  477. data/src/cxx_supportlib/vendor-modified/libev/ev.h +111 -105
  478. data/src/cxx_supportlib/vendor-modified/libev/ev_epoll.c +42 -29
  479. data/src/cxx_supportlib/vendor-modified/libev/ev_iouring.c +694 -0
  480. data/src/cxx_supportlib/vendor-modified/libev/ev_kqueue.c +15 -9
  481. data/src/cxx_supportlib/vendor-modified/libev/ev_linuxaio.c +620 -0
  482. data/src/cxx_supportlib/vendor-modified/libev/ev_poll.c +19 -14
  483. data/src/cxx_supportlib/vendor-modified/libev/ev_port.c +8 -5
  484. data/src/cxx_supportlib/vendor-modified/libev/ev_select.c +6 -6
  485. data/src/cxx_supportlib/vendor-modified/libev/ev_vars.h +48 -3
  486. data/src/cxx_supportlib/vendor-modified/libev/ev_win32.c +2 -2
  487. data/src/cxx_supportlib/vendor-modified/libev/ev_wrap.h +72 -0
  488. data/src/cxx_supportlib/vendor-modified/libev/install-sh +23 -13
  489. data/src/cxx_supportlib/vendor-modified/libev/libev.m4 +6 -1
  490. data/src/cxx_supportlib/vendor-modified/libev/ltmain.sh +3581 -1993
  491. data/src/cxx_supportlib/vendor-modified/libev/missing +8 -8
  492. data/src/cxx_supportlib/vendor-modified/libev/mkinstalldirs +3 -3
  493. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +1 -1
  494. data/src/helper-scripts/backtrace-sanitizer.rb +1 -1
  495. data/src/helper-scripts/crash-watch.rb +1 -1
  496. data/src/helper-scripts/download_binaries/extconf.rb +1 -1
  497. data/src/helper-scripts/meteor-loader.rb +4 -1
  498. data/src/helper-scripts/node-loader.js +1 -1
  499. data/src/helper-scripts/prespawn +1 -1
  500. data/src/helper-scripts/rack-loader.rb +4 -1
  501. data/src/helper-scripts/rack-preloader.rb +4 -1
  502. data/src/helper-scripts/wsgi-loader.py +1 -1
  503. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +1 -1
  504. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +1 -1
  505. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +1 -1
  506. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +1 -1
  507. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +1 -1
  508. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +1 -1
  509. data/src/nginx_module/Configuration.c +1 -1
  510. data/src/nginx_module/Configuration.h +1 -1
  511. data/src/nginx_module/ContentHandler.c +14 -2
  512. data/src/nginx_module/ContentHandler.h +1 -1
  513. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +1 -1
  514. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  515. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +1 -1
  516. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +1 -1
  517. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +1 -1
  518. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  519. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +1 -1
  520. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +1 -1
  521. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +1 -1
  522. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  523. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +1 -1
  524. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  525. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +1 -1
  526. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  527. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +1 -1
  528. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  529. data/src/nginx_module/StaticContentHandler.c +1 -1
  530. data/src/nginx_module/StaticContentHandler.h +1 -1
  531. data/src/nginx_module/ngx_http_passenger_module.c +1 -1
  532. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  533. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +1 -1
  534. data/src/ruby_native_extension/extconf.rb +1 -1
  535. data/src/ruby_native_extension/passenger_native_support.c +1 -1
  536. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +1 -1
  537. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +3 -1
  538. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +3 -1
  539. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +4 -12
  540. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +3 -1
  541. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -1
  542. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +7 -1
  543. data/src/ruby_supportlib/phusion_passenger/common_library.rb +11 -10
  544. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +3 -1
  545. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +3 -1
  546. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +3 -1
  547. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +3 -1
  548. data/src/ruby_supportlib/phusion_passenger/config/command.rb +3 -1
  549. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +3 -1
  550. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +3 -1
  551. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +3 -1
  552. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -1
  553. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -1
  554. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -1
  555. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -1
  556. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +5 -1
  557. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +3 -1
  558. data/src/ruby_supportlib/phusion_passenger/config/main.rb +3 -1
  559. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +5 -2
  560. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +8 -1
  561. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +3 -1
  562. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +3 -1
  563. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +3 -1
  564. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +5 -1
  565. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +3 -1
  566. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +1 -1
  567. data/src/ruby_supportlib/phusion_passenger/constants.rb +5 -1
  568. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +3 -1
  569. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +3 -1
  570. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +1 -1
  571. data/src/ruby_supportlib/phusion_passenger/message_client.rb +1 -1
  572. data/src/ruby_supportlib/phusion_passenger/native_support.rb +1 -1
  573. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +1 -1
  574. data/src/ruby_supportlib/phusion_passenger/packaging.rb +7 -3
  575. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +3 -1
  576. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +3 -1
  577. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +3 -1
  578. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +197 -11
  579. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +2 -1
  580. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +3 -1
  581. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +3 -1
  582. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck.rb +4 -0
  583. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +3 -1
  584. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +3 -1
  585. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +3 -1
  586. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +3 -1
  587. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +3 -1
  588. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +3 -1
  589. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +3 -1
  590. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +3 -1
  591. data/src/ruby_supportlib/phusion_passenger/plugin.rb +1 -1
  592. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +2 -1
  593. data/src/ruby_supportlib/phusion_passenger/public_api.rb +3 -1
  594. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +7 -1
  595. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +3 -1
  596. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +7 -1
  597. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +13 -1
  598. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +4 -7
  599. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +1 -1
  600. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +5 -1
  601. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +1 -1
  602. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +1 -1
  603. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +3 -1
  604. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +3 -1
  605. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +5 -1
  606. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +5 -1
  607. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +5 -1
  608. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +3 -1
  609. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +8 -2
  610. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +10 -8
  611. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +3 -1
  612. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +3 -1
  613. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +3 -1
  614. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +3 -1
  615. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +5 -1
  616. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +5 -1
  617. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +3 -1
  618. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +3 -1
  619. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +4 -0
  620. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +3 -1
  621. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +5 -1
  622. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
  623. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +3 -1
  624. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +2 -0
  625. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +3 -1
  626. data/src/ruby_supportlib/phusion_passenger/utils/tmpio.rb +2 -0
  627. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +5 -13
  628. data/src/ruby_supportlib/phusion_passenger/utils.rb +3 -1
  629. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +3 -1
  630. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +3 -1
  631. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +3 -1
  632. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +3 -1
  633. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +5 -1
  634. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +3 -1
  635. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +10 -6
  636. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +4 -3
  637. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +8 -4
  638. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +395 -579
  639. data/src/ruby_supportlib/phusion_passenger.rb +10 -8
  640. data/src/schema_printer/SchemaPrinterMain.cpp +1 -1
  641. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +1 -1
  642. metadata +76 -36
  643. data/doc/DeveloperQuickstart.md +0 -70
  644. data/src/README.md +0 -7
  645. data/src/cxx_supportlib/vendor-copy/libuv/README.md +0 -245
  646. data/src/cxx_supportlib/vendor-copy/libuv/checksparse.sh +0 -234
  647. data/src/cxx_supportlib/vendor-copy/libuv/common.gypi +0 -210
  648. data/src/cxx_supportlib/vendor-copy/libuv/gyp_uv.py +0 -93
  649. data/src/cxx_supportlib/vendor-copy/libuv/include/android-ifaddrs.h +0 -54
  650. data/src/cxx_supportlib/vendor-copy/libuv/include/pthread-fixes.h +0 -72
  651. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/android-ifaddrs.c +0 -703
  652. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/atomic-ops.h +0 -77
  653. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-core.c +0 -899
  654. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-inotify.c +0 -285
  655. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.c +0 -471
  656. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.h +0 -158
  657. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pthread-fixes.c +0 -104
  658. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/spinlock.h +0 -53
  659. data/src/cxx_supportlib/vendor-copy/libuv/uv.gyp +0 -508
  660. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-aix.h → uv/aix.h} +0 -0
  661. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-bsd.h → uv/bsd.h} +0 -0
  662. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-sunos.h → uv/sunos.h} +0 -0
@@ -18,91 +18,73 @@
18
18
 
19
19
  #include <stddef.h>
20
20
 
21
- typedef void *QUEUE[2];
22
-
23
- /* Private macros. */
24
- #define QUEUE_NEXT(q) (*(QUEUE **) &((*(q))[0]))
25
- #define QUEUE_PREV(q) (*(QUEUE **) &((*(q))[1]))
26
- #define QUEUE_PREV_NEXT(q) (QUEUE_NEXT(QUEUE_PREV(q)))
27
- #define QUEUE_NEXT_PREV(q) (QUEUE_PREV(QUEUE_NEXT(q)))
28
-
29
- /* Public macros. */
30
- #define QUEUE_DATA(ptr, type, field) \
31
- ((type *) ((char *) (ptr) - offsetof(type, field)))
32
-
33
- /* Important note: mutating the list while QUEUE_FOREACH is
34
- * iterating over its elements results in undefined behavior.
35
- */
36
- #define QUEUE_FOREACH(q, h) \
37
- for ((q) = QUEUE_NEXT(h); (q) != (h); (q) = QUEUE_NEXT(q))
38
-
39
- #define QUEUE_EMPTY(q) \
40
- ((const QUEUE *) (q) == (const QUEUE *) QUEUE_NEXT(q))
41
-
42
- #define QUEUE_HEAD(q) \
43
- (QUEUE_NEXT(q))
44
-
45
- #define QUEUE_INIT(q) \
46
- do { \
47
- QUEUE_NEXT(q) = (q); \
48
- QUEUE_PREV(q) = (q); \
49
- } \
50
- while (0)
51
-
52
- #define QUEUE_ADD(h, n) \
53
- do { \
54
- QUEUE_PREV_NEXT(h) = QUEUE_NEXT(n); \
55
- QUEUE_NEXT_PREV(n) = QUEUE_PREV(h); \
56
- QUEUE_PREV(h) = QUEUE_PREV(n); \
57
- QUEUE_PREV_NEXT(h) = (h); \
58
- } \
59
- while (0)
60
-
61
- #define QUEUE_SPLIT(h, q, n) \
62
- do { \
63
- QUEUE_PREV(n) = QUEUE_PREV(h); \
64
- QUEUE_PREV_NEXT(n) = (n); \
65
- QUEUE_NEXT(n) = (q); \
66
- QUEUE_PREV(h) = QUEUE_PREV(q); \
67
- QUEUE_PREV_NEXT(h) = (h); \
68
- QUEUE_PREV(q) = (n); \
69
- } \
70
- while (0)
71
-
72
- #define QUEUE_MOVE(h, n) \
73
- do { \
74
- if (QUEUE_EMPTY(h)) \
75
- QUEUE_INIT(n); \
76
- else { \
77
- QUEUE* q = QUEUE_HEAD(h); \
78
- QUEUE_SPLIT(h, q, n); \
79
- } \
80
- } \
81
- while (0)
82
-
83
- #define QUEUE_INSERT_HEAD(h, q) \
84
- do { \
85
- QUEUE_NEXT(q) = QUEUE_NEXT(h); \
86
- QUEUE_PREV(q) = (h); \
87
- QUEUE_NEXT_PREV(q) = (q); \
88
- QUEUE_NEXT(h) = (q); \
89
- } \
90
- while (0)
91
-
92
- #define QUEUE_INSERT_TAIL(h, q) \
93
- do { \
94
- QUEUE_NEXT(q) = (h); \
95
- QUEUE_PREV(q) = QUEUE_PREV(h); \
96
- QUEUE_PREV_NEXT(q) = (q); \
97
- QUEUE_PREV(h) = (q); \
98
- } \
99
- while (0)
100
-
101
- #define QUEUE_REMOVE(q) \
102
- do { \
103
- QUEUE_PREV_NEXT(q) = QUEUE_NEXT(q); \
104
- QUEUE_NEXT_PREV(q) = QUEUE_PREV(q); \
105
- } \
106
- while (0)
21
+ #define uv__queue_data(pointer, type, field) \
22
+ ((type*) ((char*) (pointer) - offsetof(type, field)))
23
+
24
+ #define uv__queue_foreach(q, h) \
25
+ for ((q) = (h)->next; (q) != (h); (q) = (q)->next)
26
+
27
+ static inline void uv__queue_init(struct uv__queue* q) {
28
+ q->next = q;
29
+ q->prev = q;
30
+ }
31
+
32
+ static inline int uv__queue_empty(const struct uv__queue* q) {
33
+ return q == q->next;
34
+ }
35
+
36
+ static inline struct uv__queue* uv__queue_head(const struct uv__queue* q) {
37
+ return q->next;
38
+ }
39
+
40
+ static inline struct uv__queue* uv__queue_next(const struct uv__queue* q) {
41
+ return q->next;
42
+ }
43
+
44
+ static inline void uv__queue_add(struct uv__queue* h, struct uv__queue* n) {
45
+ h->prev->next = n->next;
46
+ n->next->prev = h->prev;
47
+ h->prev = n->prev;
48
+ h->prev->next = h;
49
+ }
50
+
51
+ static inline void uv__queue_split(struct uv__queue* h,
52
+ struct uv__queue* q,
53
+ struct uv__queue* n) {
54
+ n->prev = h->prev;
55
+ n->prev->next = n;
56
+ n->next = q;
57
+ h->prev = q->prev;
58
+ h->prev->next = h;
59
+ q->prev = n;
60
+ }
61
+
62
+ static inline void uv__queue_move(struct uv__queue* h, struct uv__queue* n) {
63
+ if (uv__queue_empty(h))
64
+ uv__queue_init(n);
65
+ else
66
+ uv__queue_split(h, h->next, n);
67
+ }
68
+
69
+ static inline void uv__queue_insert_head(struct uv__queue* h,
70
+ struct uv__queue* q) {
71
+ q->next = h->next;
72
+ q->prev = h;
73
+ q->next->prev = q;
74
+ h->next = q;
75
+ }
76
+
77
+ static inline void uv__queue_insert_tail(struct uv__queue* h,
78
+ struct uv__queue* q) {
79
+ q->next = h;
80
+ q->prev = h->prev;
81
+ q->prev->next = q;
82
+ h->prev = q;
83
+ }
84
+
85
+ static inline void uv__queue_remove(struct uv__queue* q) {
86
+ q->prev->next = q->next;
87
+ q->next->prev = q->prev;
88
+ }
107
89
 
108
90
  #endif /* QUEUE_H_ */
@@ -0,0 +1,123 @@
1
+ /* Copyright libuv contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #include "uv.h"
23
+ #include "uv-common.h"
24
+
25
+ #ifdef _WIN32
26
+ # include "win/internal.h"
27
+ #else
28
+ # include "unix/internal.h"
29
+ #endif
30
+
31
+ static int uv__random(void* buf, size_t buflen) {
32
+ int rc;
33
+
34
+ #if defined(__PASE__)
35
+ rc = uv__random_readpath("/dev/urandom", buf, buflen);
36
+ #elif defined(_AIX) || defined(__QNX__)
37
+ rc = uv__random_readpath("/dev/random", buf, buflen);
38
+ #elif defined(__APPLE__) || defined(__OpenBSD__) || \
39
+ (defined(__ANDROID_API__) && __ANDROID_API__ >= 28)
40
+ rc = uv__random_getentropy(buf, buflen);
41
+ if (rc == UV_ENOSYS)
42
+ rc = uv__random_devurandom(buf, buflen);
43
+ #elif defined(__NetBSD__)
44
+ rc = uv__random_sysctl(buf, buflen);
45
+ #elif defined(__FreeBSD__) || defined(__linux__)
46
+ rc = uv__random_getrandom(buf, buflen);
47
+ if (rc == UV_ENOSYS)
48
+ rc = uv__random_devurandom(buf, buflen);
49
+ # if defined(__linux__)
50
+ switch (rc) {
51
+ case UV_EACCES:
52
+ case UV_EIO:
53
+ case UV_ELOOP:
54
+ case UV_EMFILE:
55
+ case UV_ENFILE:
56
+ case UV_ENOENT:
57
+ case UV_EPERM:
58
+ rc = uv__random_sysctl(buf, buflen);
59
+ break;
60
+ }
61
+ # endif
62
+ #elif defined(_WIN32)
63
+ uv__once_init();
64
+ rc = uv__random_rtlgenrandom(buf, buflen);
65
+ #else
66
+ rc = uv__random_devurandom(buf, buflen);
67
+ #endif
68
+
69
+ return rc;
70
+ }
71
+
72
+
73
+ static void uv__random_work(struct uv__work* w) {
74
+ uv_random_t* req;
75
+
76
+ req = container_of(w, uv_random_t, work_req);
77
+ req->status = uv__random(req->buf, req->buflen);
78
+ }
79
+
80
+
81
+ static void uv__random_done(struct uv__work* w, int status) {
82
+ uv_random_t* req;
83
+
84
+ req = container_of(w, uv_random_t, work_req);
85
+ uv__req_unregister(req->loop);
86
+
87
+ if (status == 0)
88
+ status = req->status;
89
+
90
+ req->cb(req, status, req->buf, req->buflen);
91
+ }
92
+
93
+
94
+ int uv_random(uv_loop_t* loop,
95
+ uv_random_t* req,
96
+ void *buf,
97
+ size_t buflen,
98
+ unsigned flags,
99
+ uv_random_cb cb) {
100
+ if (buflen > 0x7FFFFFFFu)
101
+ return UV_E2BIG;
102
+
103
+ if (flags != 0)
104
+ return UV_EINVAL;
105
+
106
+ if (cb == NULL)
107
+ return uv__random(buf, buflen);
108
+
109
+ uv__req_init(loop, req, UV_RANDOM);
110
+ req->loop = loop;
111
+ req->status = 0;
112
+ req->cb = cb;
113
+ req->buf = buf;
114
+ req->buflen = buflen;
115
+
116
+ uv__work_submit(loop,
117
+ &req->work_req,
118
+ UV__WORK_CPU,
119
+ uv__random_work,
120
+ uv__random_done);
121
+
122
+ return 0;
123
+ }
@@ -0,0 +1,38 @@
1
+ /* Copyright libuv project contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #include "strscpy.h"
23
+ #include <limits.h> /* SSIZE_MAX */
24
+
25
+ ssize_t uv__strscpy(char* d, const char* s, size_t n) {
26
+ size_t i;
27
+
28
+ for (i = 0; i < n; i++)
29
+ if ('\0' == (d[i] = s[i]))
30
+ return i > SSIZE_MAX ? UV_E2BIG : (ssize_t) i;
31
+
32
+ if (i == 0)
33
+ return 0;
34
+
35
+ d[--i] = '\0';
36
+
37
+ return UV_E2BIG;
38
+ }
@@ -0,0 +1,39 @@
1
+ /* Copyright libuv project contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #ifndef UV_STRSCPY_H_
23
+ #define UV_STRSCPY_H_
24
+
25
+ /* Include uv.h for its definitions of size_t and ssize_t.
26
+ * size_t can be obtained directly from <stddef.h> but ssize_t requires
27
+ * some hoop jumping on Windows that I didn't want to duplicate here.
28
+ */
29
+ #include "uv.h"
30
+
31
+ /* Copies up to |n-1| bytes from |s| to |d| and always zero-terminates
32
+ * the result, except when |n==0|. Returns the number of bytes copied
33
+ * or UV_E2BIG if |d| is too small.
34
+ *
35
+ * See https://www.kernel.org/doc/htmldocs/kernel-api/API-strscpy.html
36
+ */
37
+ ssize_t uv__strscpy(char* d, const char* s, size_t n);
38
+
39
+ #endif /* UV_STRSCPY_H_ */
@@ -0,0 +1,52 @@
1
+ /* Copyright libuv project contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #include <stdlib.h>
23
+ #include "strtok.h"
24
+
25
+ char* uv__strtok(char* str, const char* sep, char** itr) {
26
+ const char* sep_itr;
27
+ char* tmp;
28
+ char* start;
29
+
30
+ if (str == NULL)
31
+ start = tmp = *itr;
32
+ else
33
+ start = tmp = str;
34
+
35
+ if (tmp == NULL)
36
+ return NULL;
37
+
38
+ while (*tmp != '\0') {
39
+ sep_itr = sep;
40
+ while (*sep_itr != '\0') {
41
+ if (*tmp == *sep_itr) {
42
+ *itr = tmp + 1;
43
+ *tmp = '\0';
44
+ return start;
45
+ }
46
+ sep_itr++;
47
+ }
48
+ tmp++;
49
+ }
50
+ *itr = NULL;
51
+ return start;
52
+ }
@@ -0,0 +1,27 @@
1
+ /* Copyright libuv project contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #ifndef UV_STRTOK_H_
23
+ #define UV_STRTOK_H_
24
+
25
+ char* uv__strtok(char* str, const char* sep, char** itr);
26
+
27
+ #endif /* UV_STRTOK_H_ */
@@ -0,0 +1,175 @@
1
+ /* Copyright libuv project contributors. All rights reserved.
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ * of this software and associated documentation files (the "Software"), to
5
+ * deal in the Software without restriction, including without limitation the
6
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ * sell copies of the Software, and to permit persons to whom the Software is
8
+ * furnished to do so, subject to the following conditions:
9
+ *
10
+ * The above copyright notice and this permission notice shall be included in
11
+ * all copies or substantial portions of the Software.
12
+ *
13
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19
+ * IN THE SOFTWARE.
20
+ */
21
+
22
+ #include "uv.h"
23
+ #include "uv-common.h"
24
+
25
+ #include <stdlib.h>
26
+ #ifndef _WIN32
27
+ #include <pthread.h>
28
+ #endif
29
+
30
+ #if defined(PTHREAD_BARRIER_SERIAL_THREAD)
31
+ STATIC_ASSERT(sizeof(uv_barrier_t) == sizeof(pthread_barrier_t));
32
+ #endif
33
+
34
+ /* Note: guard clauses should match uv_barrier_t's in include/uv/unix.h. */
35
+ #if defined(_AIX) || \
36
+ defined(__OpenBSD__) || \
37
+ !defined(PTHREAD_BARRIER_SERIAL_THREAD)
38
+ int uv_barrier_init(uv_barrier_t* barrier, unsigned int count) {
39
+ int rc;
40
+ #ifdef _WIN32
41
+ uv_barrier_t* b;
42
+ b = barrier;
43
+
44
+ if (barrier == NULL || count == 0)
45
+ return UV_EINVAL;
46
+ #else
47
+ struct _uv_barrier* b;
48
+
49
+ if (barrier == NULL || count == 0)
50
+ return UV_EINVAL;
51
+
52
+ b = uv__malloc(sizeof(*b));
53
+ if (b == NULL)
54
+ return UV_ENOMEM;
55
+ #endif
56
+
57
+ b->in = 0;
58
+ b->out = 0;
59
+ b->threshold = count;
60
+
61
+ rc = uv_mutex_init(&b->mutex);
62
+ if (rc != 0)
63
+ goto error2;
64
+
65
+ /* TODO(vjnash): remove these uv_cond_t casts in v2. */
66
+ rc = uv_cond_init((uv_cond_t*) &b->cond);
67
+ if (rc != 0)
68
+ goto error;
69
+
70
+ #ifndef _WIN32
71
+ barrier->b = b;
72
+ #endif
73
+ return 0;
74
+
75
+ error:
76
+ uv_mutex_destroy(&b->mutex);
77
+ error2:
78
+ #ifndef _WIN32
79
+ uv__free(b);
80
+ #endif
81
+ return rc;
82
+ }
83
+
84
+
85
+ int uv_barrier_wait(uv_barrier_t* barrier) {
86
+ int last;
87
+ #ifdef _WIN32
88
+ uv_barrier_t* b;
89
+ b = barrier;
90
+ #else
91
+ struct _uv_barrier* b;
92
+
93
+ if (barrier == NULL || barrier->b == NULL)
94
+ return UV_EINVAL;
95
+
96
+ b = barrier->b;
97
+ #endif
98
+
99
+ uv_mutex_lock(&b->mutex);
100
+
101
+ while (b->out != 0)
102
+ uv_cond_wait((uv_cond_t*) &b->cond, &b->mutex);
103
+
104
+ if (++b->in == b->threshold) {
105
+ b->in = 0;
106
+ b->out = b->threshold;
107
+ uv_cond_broadcast((uv_cond_t*) &b->cond);
108
+ } else {
109
+ do
110
+ uv_cond_wait((uv_cond_t*) &b->cond, &b->mutex);
111
+ while (b->in != 0);
112
+ }
113
+
114
+ last = (--b->out == 0);
115
+ if (last)
116
+ uv_cond_broadcast((uv_cond_t*) &b->cond);
117
+
118
+ uv_mutex_unlock(&b->mutex);
119
+ return last;
120
+ }
121
+
122
+
123
+ void uv_barrier_destroy(uv_barrier_t* barrier) {
124
+ #ifdef _WIN32
125
+ uv_barrier_t* b;
126
+ b = barrier;
127
+ #else
128
+ struct _uv_barrier* b;
129
+ b = barrier->b;
130
+ #endif
131
+
132
+ uv_mutex_lock(&b->mutex);
133
+
134
+ assert(b->in == 0);
135
+ while (b->out != 0)
136
+ uv_cond_wait((uv_cond_t*) &b->cond, &b->mutex);
137
+
138
+ if (b->in != 0)
139
+ abort();
140
+
141
+ uv_mutex_unlock(&b->mutex);
142
+ uv_mutex_destroy(&b->mutex);
143
+ uv_cond_destroy((uv_cond_t*) &b->cond);
144
+
145
+ #ifndef _WIN32
146
+ uv__free(barrier->b);
147
+ barrier->b = NULL;
148
+ #endif
149
+ }
150
+
151
+ #else
152
+
153
+ int uv_barrier_init(uv_barrier_t* barrier, unsigned int count) {
154
+ return UV__ERR(pthread_barrier_init(barrier, NULL, count));
155
+ }
156
+
157
+
158
+ int uv_barrier_wait(uv_barrier_t* barrier) {
159
+ int rc;
160
+
161
+ rc = pthread_barrier_wait(barrier);
162
+ if (rc != 0)
163
+ if (rc != PTHREAD_BARRIER_SERIAL_THREAD)
164
+ abort();
165
+
166
+ return rc == PTHREAD_BARRIER_SERIAL_THREAD;
167
+ }
168
+
169
+
170
+ void uv_barrier_destroy(uv_barrier_t* barrier) {
171
+ if (pthread_barrier_destroy(barrier))
172
+ abort();
173
+ }
174
+
175
+ #endif