passenger 6.2.0 → 6.2.2

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 (898) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +69 -15
  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 +39 -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 +5 -64
  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 +2 -3
  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 +21 -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 +15 -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 +28 -4
  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 +31 -4
  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 +2 -2
  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 +2 -2
  283. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +2 -2
  284. data/src/cxx_supportlib/ServerKit/HttpRequest.h +2 -2
  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/ServerKit/llerrors.h +3 -3
  290. data/src/cxx_supportlib/ServerKit/llversion.h +1 -1
  291. data/src/cxx_supportlib/StaticString.h +1 -1
  292. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  293. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +1 -1
  294. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +1 -1
  295. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +1 -1
  296. data/src/cxx_supportlib/StrIntTools/StringScanning.h +1 -1
  297. data/src/cxx_supportlib/StrIntTools/Template.h +1 -1
  298. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +1 -1
  299. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  300. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +1 -1
  301. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +1 -1
  302. data/src/cxx_supportlib/SystemTools/SystemTime.h +1 -1
  303. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +1 -1
  304. data/src/cxx_supportlib/SystemTools/UserDatabase.h +1 -1
  305. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +1 -1
  306. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +1 -1
  307. data/src/cxx_supportlib/Utils/BlockingQueue.h +1 -1
  308. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +1 -1
  309. data/src/cxx_supportlib/Utils/CachedFileStat.h +1 -1
  310. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +1 -1
  311. data/src/cxx_supportlib/Utils/ClassUtils.h +1 -1
  312. data/src/cxx_supportlib/Utils/Curl.h +1 -1
  313. data/src/cxx_supportlib/Utils/FastStringStream.h +1 -1
  314. data/src/cxx_supportlib/Utils/FileChangeChecker.h +1 -1
  315. data/src/cxx_supportlib/Utils/HttpConstants.h +1 -1
  316. data/src/cxx_supportlib/Utils/IniFile.h +1 -1
  317. data/src/cxx_supportlib/Utils/MessagePassing.h +1 -1
  318. data/src/cxx_supportlib/Utils/OptionParsing.h +1 -1
  319. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +1 -1
  320. data/src/cxx_supportlib/Utils/ScopeGuard.h +1 -1
  321. data/src/cxx_supportlib/Utils/SpeedMeter.h +1 -1
  322. data/src/cxx_supportlib/Utils/Timer.h +1 -1
  323. data/src/cxx_supportlib/Utils/VariantMap.h +1 -1
  324. data/src/cxx_supportlib/Utils.cpp +1 -1
  325. data/src/cxx_supportlib/Utils.h +1 -1
  326. data/src/cxx_supportlib/WatchdogLauncher.cpp +1 -1
  327. data/src/cxx_supportlib/WatchdogLauncher.h +1 -1
  328. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +1 -1
  329. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +1 -1
  330. data/src/cxx_supportlib/WrapperRegistry/Entry.h +1 -1
  331. data/src/cxx_supportlib/WrapperRegistry/Registry.h +1 -1
  332. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  333. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  334. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  335. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  336. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
  337. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
  338. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/implementation.cpp +1 -1
  340. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  342. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  343. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  344. data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
  345. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  346. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  347. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +1 -1
  348. data/src/cxx_supportlib/vendor-copy/libuv/AUTHORS +353 -3
  349. data/src/cxx_supportlib/vendor-copy/libuv/ChangeLog +3981 -2
  350. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE +1 -28
  351. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-docs +396 -0
  352. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-extra +36 -0
  353. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.am +275 -58
  354. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.in +4380 -2125
  355. data/src/cxx_supportlib/vendor-copy/libuv/aclocal.m4 +425 -221
  356. data/src/cxx_supportlib/vendor-copy/libuv/ar-lib +30 -10
  357. data/src/cxx_supportlib/vendor-copy/libuv/compile +31 -14
  358. data/src/cxx_supportlib/vendor-copy/libuv/config.guess +1084 -690
  359. data/src/cxx_supportlib/vendor-copy/libuv/config.sub +1844 -1297
  360. data/src/cxx_supportlib/vendor-copy/libuv/configure +6935 -3664
  361. data/src/cxx_supportlib/vendor-copy/libuv/configure.ac +43 -19
  362. data/src/cxx_supportlib/vendor-copy/libuv/depcomp +12 -11
  363. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-darwin.h → uv/darwin.h} +3 -3
  364. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-errno.h → uv/errno.h} +119 -60
  365. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-linux.h → uv/linux.h} +1 -1
  366. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/os390.h +33 -0
  367. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/posix.h +31 -0
  368. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-threadpool.h → uv/threadpool.h} +1 -1
  369. data/src/cxx_supportlib/vendor-copy/libuv/include/{tree.h → uv/tree.h} +3 -250
  370. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-unix.h → uv/unix.h} +186 -60
  371. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-version.h → uv/version.h} +3 -3
  372. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/win.h +703 -0
  373. data/src/cxx_supportlib/vendor-copy/libuv/include/uv.h +528 -40
  374. data/src/cxx_supportlib/vendor-copy/libuv/install-sh +110 -70
  375. data/src/cxx_supportlib/vendor-copy/libuv/libuv-static.pc.in +12 -0
  376. data/src/cxx_supportlib/vendor-copy/libuv/libuv.pc.in +4 -2
  377. data/src/cxx_supportlib/vendor-copy/libuv/ltmain.sh +995 -619
  378. data/src/cxx_supportlib/vendor-copy/libuv/m4/ax_pthread.m4 +485 -0
  379. data/src/cxx_supportlib/vendor-copy/libuv/m4/libtool.m4 +438 -289
  380. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-flags.m4 +21 -4
  381. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-versions.m4 +7 -0
  382. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltoptions.m4 +69 -39
  383. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltsugar.m4 +1 -1
  384. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltversion.m4 +7 -6
  385. data/src/cxx_supportlib/vendor-copy/libuv/m4/lt~obsolete.m4 +2 -2
  386. data/src/cxx_supportlib/vendor-copy/libuv/missing +55 -34
  387. data/src/cxx_supportlib/vendor-copy/libuv/src/fs-poll.c +52 -20
  388. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.c +560 -0
  389. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.h +31 -0
  390. data/src/cxx_supportlib/vendor-copy/libuv/src/inet.c +5 -16
  391. data/src/cxx_supportlib/vendor-copy/libuv/src/queue.h +68 -86
  392. data/src/cxx_supportlib/vendor-copy/libuv/src/random.c +123 -0
  393. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.c +38 -0
  394. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.h +39 -0
  395. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.c +52 -0
  396. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.h +27 -0
  397. data/src/cxx_supportlib/vendor-copy/libuv/src/thread-common.c +175 -0
  398. data/src/cxx_supportlib/vendor-copy/libuv/src/threadpool.c +172 -57
  399. data/src/cxx_supportlib/vendor-copy/libuv/src/{unix/timer.c → timer.c} +57 -29
  400. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix-common.c +89 -0
  401. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix.c +418 -256
  402. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/async.c +168 -129
  403. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-ifaddrs.c +163 -0
  404. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-proctitle.c +99 -0
  405. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/core.c +1312 -378
  406. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/cygwin.c +93 -0
  407. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-proctitle.c +18 -32
  408. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-stub.h +97 -0
  409. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-syscalls.h +17 -0
  410. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin.c +41 -139
  411. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/dl.c +1 -1
  412. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/freebsd.c +75 -235
  413. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fs.c +1308 -299
  414. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fsevents.c +150 -148
  415. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getaddrinfo.c +58 -8
  416. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getnameinfo.c +3 -2
  417. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/haiku.c +172 -0
  418. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/hurd.c +172 -0
  419. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/ibmi.c +542 -0
  420. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/internal.h +297 -106
  421. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/kqueue.c +325 -94
  422. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux.c +2708 -0
  423. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop-watcher.c +11 -11
  424. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop.c +105 -24
  425. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/netbsd.c +51 -157
  426. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-fsevents.c +42 -0
  427. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-proctitle.c +45 -0
  428. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/openbsd.c +42 -183
  429. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-proctitle.c +136 -0
  430. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.c +536 -0
  431. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.h +75 -0
  432. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390.c +1070 -0
  433. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pipe.c +324 -55
  434. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/poll.c +58 -11
  435. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-hrtime.c +36 -0
  436. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-poll.c +385 -0
  437. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/process.c +795 -248
  438. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/procfs-exepath.c +45 -0
  439. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/proctitle.c +77 -22
  440. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/qnx.c +142 -0
  441. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-devurandom.c +93 -0
  442. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getentropy.c +57 -0
  443. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getrandom.c +86 -0
  444. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-sysctl-linux.c +99 -0
  445. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/signal.c +147 -39
  446. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/stream.c +426 -474
  447. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sunos.c +240 -98
  448. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-loadavg.c +36 -0
  449. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-memory.c +42 -0
  450. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tcp.c +402 -91
  451. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/thread.c +497 -145
  452. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tty.c +269 -45
  453. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/udp.c +695 -165
  454. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.c +463 -61
  455. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.h +248 -44
  456. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-data-getter-setters.c +119 -0
  457. data/src/cxx_supportlib/vendor-copy/libuv/tsansupp.txt +2 -0
  458. data/src/cxx_supportlib/{ServerKit/llhttp_api.c → vendor-copy/llhttp/api.c} +30 -23
  459. data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.c +1756 -1645
  460. data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.h +35 -13
  461. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +19 -0
  462. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +0 -2
  464. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +20 -13
  465. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +2 -2
  466. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +4 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +1 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/debug.hpp +4 -0
  469. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  470. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +1 -1
  471. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
  474. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +1 -1
  475. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
  476. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +10 -1
  477. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +5 -3
  478. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +1 -1
  479. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +5 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +57 -53
  481. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +10 -10
  482. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -2
  483. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +14 -2
  484. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +176 -2287
  485. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +13 -9
  486. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +186 -70
  487. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +2 -2
  488. data/src/cxx_supportlib/vendor-modified/boost/container/detail/aligned_allocation.hpp +149 -0
  489. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +35 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +1 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/container/detail/bit_utilities.hpp +133 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +18 -3
  493. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +5 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +4 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +1 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +20 -10
  497. data/src/cxx_supportlib/vendor-modified/boost/container/detail/deque_impl.hpp +2744 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +202 -104
  499. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +5 -4
  500. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +161 -85
  501. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_constructible.hpp +180 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +3 -2
  503. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +12 -0
  504. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +16 -0
  505. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +1 -1
  506. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +9 -1
  507. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +18 -14
  508. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +256 -41
  509. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +75 -24
  510. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +1 -56
  511. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +16 -3
  512. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +1 -7
  513. data/src/cxx_supportlib/vendor-modified/boost/container/detail/range_utils.hpp +196 -0
  514. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +33 -1
  515. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +124 -69
  516. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +109 -7
  517. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +168 -162
  518. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/nest.hpp +2978 -0
  519. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/pmr/nest.hpp +45 -0
  520. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_all_of.hpp +43 -0
  521. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_any_of.hpp +42 -0
  522. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy.hpp +229 -0
  523. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_if.hpp +270 -0
  524. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_n.hpp +308 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count.hpp +101 -0
  526. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count_if.hpp +100 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_equal.hpp +268 -0
  528. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill.hpp +101 -0
  529. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill_n.hpp +171 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find.hpp +110 -0
  531. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if.hpp +110 -0
  532. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if_not.hpp +43 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last.hpp +179 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if.hpp +179 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if_not.hpp +43 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_for_each.hpp +92 -0
  537. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate.hpp +90 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate_n.hpp +162 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_partitioned.hpp +46 -0
  540. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted.hpp +49 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted_until.hpp +169 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_iterator_traits.hpp +382 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_merge.hpp +428 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_mismatch.hpp +350 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_none_of.hpp +98 -0
  546. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition.hpp +296 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_copy.hpp +105 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_point.hpp +116 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove.hpp +57 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy.hpp +207 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy_if.hpp +223 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_if.hpp +57 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace.hpp +90 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace_if.hpp +90 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse.hpp +245 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse_copy.hpp +229 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search.hpp +211 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search_n.hpp +476 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_difference.hpp +300 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_intersection.hpp +287 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_symmetric_difference.hpp +306 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_union.hpp +294 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_stable_partition.hpp +153 -0
  564. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_swap_ranges.hpp +92 -0
  565. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_transform.hpp +93 -0
  566. data/src/cxx_supportlib/vendor-modified/boost/container/experimental/wrapped_iterator.hpp +142 -0
  567. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +642 -417
  568. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +141 -30
  569. data/src/cxx_supportlib/vendor-modified/boost/container/hub.hpp +2426 -0
  570. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +65 -57
  571. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +247 -68
  572. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +7 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +39 -33
  574. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +156 -23
  575. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +3 -3
  576. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/hub.hpp +43 -0
  577. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +5 -3
  578. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -1
  580. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +4 -0
  581. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/segtor.hpp +45 -0
  582. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +5 -4
  583. data/src/cxx_supportlib/vendor-modified/boost/container/segtor.hpp +905 -0
  584. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +148 -35
  585. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +59 -52
  586. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +632 -5
  587. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +66 -60
  588. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +46 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +612 -317
  590. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +54 -111
  591. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_construction.hpp +100 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +1 -3
  593. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +233 -116
  594. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -1
  595. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +17 -10
  596. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -3
  597. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +16 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/encoder.hpp +114 -0
  599. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +4 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +1 -1
  601. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +211 -1
  602. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +59 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +6 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +34 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +0 -1
  606. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +12 -3
  607. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
  608. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +29 -174
  609. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +18 -2
  610. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +0 -1
  611. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +4 -5
  612. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +20 -11
  613. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +42 -14
  614. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +58 -22
  615. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +3 -1
  616. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +5 -1
  617. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +8 -2
  618. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +9 -0
  619. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +11 -1
  620. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +9 -1
  621. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/config.hpp +22 -0
  622. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +15 -7
  623. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +23 -11
  624. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +11 -1
  625. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +9 -1
  626. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +11 -2
  627. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +10 -1
  628. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +8 -1
  629. data/src/cxx_supportlib/vendor-modified/boost/{detail → lexical_cast/detail}/lcast_precision.hpp +13 -1
  630. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +11 -1
  631. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +10 -2
  632. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +15 -2
  633. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +11 -1
  634. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
  635. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +48 -46
  636. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +23 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
  638. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +12 -4
  639. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +76 -0
  640. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +1 -1
  641. data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +11 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +58 -37
  643. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +1 -2
  644. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +17 -9
  645. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +1 -2
  646. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +6 -0
  647. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  648. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +6 -1
  649. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_common_defs.hpp +188 -0
  650. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +0 -6
  651. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +1 -1
  652. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_nonmember_interface.hpp +117 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +108 -83
  654. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +39 -39
  655. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_select_implementation.hpp +37 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +1 -1
  657. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +8 -8
  658. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/union_optional.hpp +724 -0
  659. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +93 -220
  660. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +14 -4
  661. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +1 -1
  662. data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +1 -1
  663. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +1 -1
  664. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1 -1
  665. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -6
  666. data/src/cxx_supportlib/vendor-modified/boost/system/api_config.hpp +1 -1
  667. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +16 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +13 -13
  669. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +5 -5
  670. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +3 -2
  671. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +3 -2
  672. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +2 -1
  673. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +1 -1
  674. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +30 -28
  675. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +6 -3
  676. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +5 -1
  677. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +1 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +16 -16
  679. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +26 -26
  680. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +196 -6
  681. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +191 -6
  682. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +196 -5
  683. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +192 -5
  684. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +3 -3
  685. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2 -2
  686. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +3 -3
  687. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +52 -16
  688. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/ranges_support.hpp +104 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +1 -14
  690. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unordered_printers.hpp +10 -4
  691. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +121 -3
  692. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +118 -3
  693. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +338 -1
  694. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +121 -3
  695. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +118 -3
  696. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +333 -1
  697. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  698. data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +276 -143
  699. data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +1262 -771
  700. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1704 -1586
  701. data/src/cxx_supportlib/vendor-modified/libev/Changes +109 -0
  702. data/src/cxx_supportlib/vendor-modified/libev/Makefile.am +2 -1
  703. data/src/cxx_supportlib/vendor-modified/libev/Makefile.in +47 -33
  704. data/src/cxx_supportlib/vendor-modified/libev/README +2 -1
  705. data/src/cxx_supportlib/vendor-modified/libev/aclocal.m4 +1653 -1224
  706. data/src/cxx_supportlib/vendor-modified/libev/config.guess +376 -316
  707. data/src/cxx_supportlib/vendor-modified/libev/config.h.in +13 -2
  708. data/src/cxx_supportlib/vendor-modified/libev/config.sub +156 -154
  709. data/src/cxx_supportlib/vendor-modified/libev/configure +1431 -940
  710. data/src/cxx_supportlib/vendor-modified/libev/configure.ac +3 -3
  711. data/src/cxx_supportlib/vendor-modified/libev/depcomp +5 -5
  712. data/src/cxx_supportlib/vendor-modified/libev/ev++.h +109 -107
  713. data/src/cxx_supportlib/vendor-modified/libev/ev.c +807 -319
  714. data/src/cxx_supportlib/vendor-modified/libev/ev.h +111 -105
  715. data/src/cxx_supportlib/vendor-modified/libev/ev_epoll.c +42 -29
  716. data/src/cxx_supportlib/vendor-modified/libev/ev_iouring.c +694 -0
  717. data/src/cxx_supportlib/vendor-modified/libev/ev_kqueue.c +15 -9
  718. data/src/cxx_supportlib/vendor-modified/libev/ev_linuxaio.c +620 -0
  719. data/src/cxx_supportlib/vendor-modified/libev/ev_poll.c +19 -14
  720. data/src/cxx_supportlib/vendor-modified/libev/ev_port.c +8 -5
  721. data/src/cxx_supportlib/vendor-modified/libev/ev_select.c +6 -6
  722. data/src/cxx_supportlib/vendor-modified/libev/ev_vars.h +48 -3
  723. data/src/cxx_supportlib/vendor-modified/libev/ev_win32.c +2 -2
  724. data/src/cxx_supportlib/vendor-modified/libev/ev_wrap.h +72 -0
  725. data/src/cxx_supportlib/vendor-modified/libev/install-sh +23 -13
  726. data/src/cxx_supportlib/vendor-modified/libev/libev.m4 +6 -1
  727. data/src/cxx_supportlib/vendor-modified/libev/ltmain.sh +3581 -1993
  728. data/src/cxx_supportlib/vendor-modified/libev/missing +8 -8
  729. data/src/cxx_supportlib/vendor-modified/libev/mkinstalldirs +3 -3
  730. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +1 -1
  731. data/src/helper-scripts/backtrace-sanitizer.rb +1 -1
  732. data/src/helper-scripts/crash-watch.rb +1 -1
  733. data/src/helper-scripts/download_binaries/extconf.rb +1 -1
  734. data/src/helper-scripts/meteor-loader.rb +1 -1
  735. data/src/helper-scripts/node-loader.js +1 -1
  736. data/src/helper-scripts/prespawn +1 -1
  737. data/src/helper-scripts/rack-loader.rb +1 -1
  738. data/src/helper-scripts/rack-preloader.rb +1 -1
  739. data/src/helper-scripts/wsgi-loader.py +1 -1
  740. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +1 -1
  741. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +1 -1
  742. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +1 -1
  743. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +1 -1
  744. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +1 -1
  745. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +1 -1
  746. data/src/nginx_module/Configuration.c +1 -1
  747. data/src/nginx_module/Configuration.h +1 -1
  748. data/src/nginx_module/ContentHandler.c +36 -1
  749. data/src/nginx_module/ContentHandler.h +1 -1
  750. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +1 -1
  751. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  752. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +1 -1
  753. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +1 -1
  754. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +1 -1
  755. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  756. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +1 -1
  757. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +1 -1
  758. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +1 -1
  759. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  760. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +1 -1
  761. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  762. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +1 -1
  763. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  764. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +1 -1
  765. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  766. data/src/nginx_module/StaticContentHandler.c +1 -1
  767. data/src/nginx_module/StaticContentHandler.h +1 -1
  768. data/src/nginx_module/ngx_http_passenger_module.c +1 -1
  769. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  770. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +1 -1
  771. data/src/ruby_native_extension/extconf.rb +1 -1
  772. data/src/ruby_native_extension/passenger_native_support.c +1 -1
  773. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +1 -1
  774. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +1 -1
  775. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +1 -1
  776. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -12
  777. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
  778. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -1
  779. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +1 -1
  780. data/src/ruby_supportlib/phusion_passenger/common_library.rb +14 -16
  781. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +1 -1
  782. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +1 -1
  783. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +1 -1
  784. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +1 -1
  785. data/src/ruby_supportlib/phusion_passenger/config/command.rb +1 -1
  786. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +1 -1
  787. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +1 -1
  788. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +1 -1
  789. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
  790. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
  791. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +1 -1
  792. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +1 -1
  793. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  794. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +1 -1
  795. data/src/ruby_supportlib/phusion_passenger/config/main.rb +1 -1
  796. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +3 -2
  797. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +6 -1
  798. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +1 -1
  799. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +1 -1
  800. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +1 -1
  801. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +1 -1
  802. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +1 -1
  803. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +1 -1
  804. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
  805. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +1 -1
  806. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +1 -1
  807. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +1 -1
  808. data/src/ruby_supportlib/phusion_passenger/message_client.rb +1 -1
  809. data/src/ruby_supportlib/phusion_passenger/native_support.rb +1 -1
  810. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +1 -1
  811. data/src/ruby_supportlib/phusion_passenger/packaging.rb +4 -3
  812. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -1
  813. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +1 -1
  814. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +1 -1
  815. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +195 -11
  816. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +1 -1
  817. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +1 -1
  818. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +1 -1
  819. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +1 -1
  820. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +1 -1
  821. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +1 -1
  822. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
  823. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +1 -1
  824. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +1 -1
  825. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +1 -1
  826. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +1 -1
  827. data/src/ruby_supportlib/phusion_passenger/plugin.rb +1 -1
  828. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +1 -1
  829. data/src/ruby_supportlib/phusion_passenger/public_api.rb +1 -1
  830. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +1 -1
  831. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +1 -1
  832. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +1 -1
  833. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +1 -1
  834. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -7
  835. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +1 -1
  836. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +1 -1
  837. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +1 -1
  838. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +1 -1
  839. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +1 -1
  840. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +1 -1
  841. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +1 -1
  842. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +1 -1
  843. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +1 -1
  844. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +1 -1
  845. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +2 -2
  846. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +4 -8
  847. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
  848. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +1 -1
  849. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +1 -1
  850. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +1 -1
  851. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +1 -1
  852. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +1 -1
  853. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +1 -1
  854. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +1 -1
  855. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +25 -2
  856. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +1 -1
  857. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +1 -1
  858. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
  859. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +1 -1
  860. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  861. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +3 -13
  862. data/src/ruby_supportlib/phusion_passenger/utils.rb +1 -1
  863. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
  864. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
  865. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  866. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +1 -1
  867. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
  868. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
  869. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +8 -6
  870. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +4 -3
  871. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +6 -4
  872. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +406 -579
  873. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  874. data/src/schema_printer/SchemaPrinterMain.cpp +1 -1
  875. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +1 -1
  876. metadata +140 -38
  877. data/doc/DeveloperQuickstart.md +0 -70
  878. data/src/README.md +0 -7
  879. data/src/cxx_supportlib/vendor-copy/libuv/README.md +0 -245
  880. data/src/cxx_supportlib/vendor-copy/libuv/checksparse.sh +0 -234
  881. data/src/cxx_supportlib/vendor-copy/libuv/common.gypi +0 -210
  882. data/src/cxx_supportlib/vendor-copy/libuv/gyp_uv.py +0 -93
  883. data/src/cxx_supportlib/vendor-copy/libuv/include/android-ifaddrs.h +0 -54
  884. data/src/cxx_supportlib/vendor-copy/libuv/include/pthread-fixes.h +0 -72
  885. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/android-ifaddrs.c +0 -703
  886. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/atomic-ops.h +0 -77
  887. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-core.c +0 -899
  888. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-inotify.c +0 -285
  889. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.c +0 -471
  890. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.h +0 -158
  891. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pthread-fixes.c +0 -104
  892. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/spinlock.h +0 -53
  893. data/src/cxx_supportlib/vendor-copy/libuv/uv.gyp +0 -508
  894. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +0 -41
  895. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-aix.h → uv/aix.h} +0 -0
  896. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-bsd.h → uv/bsd.h} +0 -0
  897. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-sunos.h → uv/sunos.h} +0 -0
  898. /data/src/cxx_supportlib/{ServerKit/llhttp_http.c → vendor-copy/llhttp/http.c} +0 -0
@@ -21,24 +21,127 @@
21
21
 
22
22
  #include "uv.h"
23
23
  #include "internal.h"
24
- #include "spinlock.h"
25
24
 
25
+ #include <stdatomic.h>
26
+ #include <stdlib.h>
26
27
  #include <assert.h>
27
28
  #include <unistd.h>
28
29
  #include <termios.h>
29
30
  #include <errno.h>
30
31
  #include <sys/ioctl.h>
31
32
 
33
+ #if defined(__MVS__) && !defined(IMAXBEL)
34
+ #define IMAXBEL 0
35
+ #endif
36
+
37
+ #if defined(__PASE__)
38
+ /* On IBM i PASE, for better compatibility with running interactive programs in
39
+ * a 5250 environment, isatty() will return true for the stdin/stdout/stderr
40
+ * streams created by QSH/QP2TERM.
41
+ *
42
+ * For more, see docs on PASE_STDIO_ISATTY in
43
+ * https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/apis/pase_environ.htm
44
+ *
45
+ * This behavior causes problems for Node as it expects that if isatty() returns
46
+ * true that TTY ioctls will be supported by that fd (which is not an
47
+ * unreasonable expectation) and when they don't it crashes with assertion
48
+ * errors.
49
+ *
50
+ * Here, we create our own version of isatty() that uses ioctl() to identify
51
+ * whether the fd is *really* a TTY or not.
52
+ */
53
+ static int isreallyatty(int file) {
54
+ int rc;
55
+
56
+ rc = !ioctl(file, TXISATTY + 0x81, NULL);
57
+ if (!rc && errno != EBADF)
58
+ errno = ENOTTY;
59
+
60
+ return rc;
61
+ }
62
+ #define isatty(fd) isreallyatty(fd)
63
+ #endif
64
+
32
65
  static int orig_termios_fd = -1;
33
66
  static struct termios orig_termios;
34
- static uv_spinlock_t termios_spinlock = UV_SPINLOCK_INITIALIZER;
67
+ static _Atomic int termios_spinlock;
68
+
69
+ int uv__tcsetattr(int fd, int how, const struct termios *term) {
70
+ int rc;
71
+
72
+ do
73
+ rc = tcsetattr(fd, how, term);
74
+ while (rc == -1 && errno == EINTR);
75
+
76
+ if (rc == -1)
77
+ return UV__ERR(errno);
78
+
79
+ return 0;
80
+ }
81
+
82
+ static int uv__tty_is_slave(const int fd) {
83
+ int result;
84
+ #if defined(__linux__) || defined(__FreeBSD__)
85
+ int dummy;
86
+
87
+ result = ioctl(fd, TIOCGPTN, &dummy) != 0;
88
+ #elif defined(__APPLE__)
89
+ char dummy[256];
90
+
91
+ result = ioctl(fd, TIOCPTYGNAME, &dummy) != 0;
92
+ #elif defined(__NetBSD__)
93
+ /*
94
+ * NetBSD as an extension returns with ptsname(3) and ptsname_r(3) the slave
95
+ * device name for both descriptors, the master one and slave one.
96
+ *
97
+ * Implement function to compare major device number with pts devices.
98
+ *
99
+ * The major numbers are machine-dependent, on NetBSD/amd64 they are
100
+ * respectively:
101
+ * - master tty: ptc - major 6
102
+ * - slave tty: pts - major 5
103
+ */
104
+
105
+ struct stat sb;
106
+ /* Lookup device's major for the pts driver and cache it. */
107
+ static devmajor_t pts = NODEVMAJOR;
108
+
109
+ if (pts == NODEVMAJOR) {
110
+ pts = getdevmajor("pts", S_IFCHR);
111
+ if (pts == NODEVMAJOR)
112
+ abort();
113
+ }
35
114
 
115
+ /* Lookup stat structure behind the file descriptor. */
116
+ if (uv__fstat(fd, &sb) != 0)
117
+ abort();
118
+
119
+ /* Assert character device. */
120
+ if (!S_ISCHR(sb.st_mode))
121
+ abort();
122
+
123
+ /* Assert valid major. */
124
+ if (major(sb.st_rdev) == NODEVMAJOR)
125
+ abort();
126
+
127
+ result = (pts == major(sb.st_rdev));
128
+ #else
129
+ /* Fallback to ptsname
130
+ */
131
+ result = ptsname(fd) == NULL;
132
+ #endif
133
+ return result;
134
+ }
36
135
 
37
- int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, int fd, int readable) {
136
+ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, int fd, int unused) {
38
137
  uv_handle_type type;
39
138
  int flags;
40
139
  int newfd;
41
140
  int r;
141
+ int saved_flags;
142
+ int mode;
143
+ char path[256];
144
+ (void)unused; /* deprecated parameter is no longer needed */
42
145
 
43
146
  /* File descriptors that refer to files cannot be monitored with epoll.
44
147
  * That restriction also applies to character devices like /dev/random
@@ -46,11 +149,20 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, int fd, int readable) {
46
149
  */
47
150
  type = uv_guess_handle(fd);
48
151
  if (type == UV_FILE || type == UV_UNKNOWN_HANDLE)
49
- return -EINVAL;
152
+ return UV_EINVAL;
50
153
 
51
154
  flags = 0;
52
155
  newfd = -1;
53
156
 
157
+ /* Save the fd flags in case we need to restore them due to an error. */
158
+ do
159
+ saved_flags = fcntl(fd, F_GETFL);
160
+ while (saved_flags == -1 && errno == EINTR);
161
+
162
+ if (saved_flags == -1)
163
+ return UV__ERR(errno);
164
+ mode = saved_flags & O_ACCMODE;
165
+
54
166
  /* Reopen the file descriptor when it refers to a tty. This lets us put the
55
167
  * tty in non-blocking mode without affecting other processes that share it
56
168
  * with us.
@@ -62,19 +174,27 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, int fd, int readable) {
62
174
  * other processes.
63
175
  */
64
176
  if (type == UV_TTY) {
65
- r = uv__open_cloexec("/dev/tty", O_RDWR);
177
+ /* Reopening a pty in master mode won't work either because the reopened
178
+ * pty will be in slave mode (*BSD) or reopening will allocate a new
179
+ * master/slave pair (Linux). Therefore check if the fd points to a
180
+ * slave device.
181
+ */
182
+ if (uv__tty_is_slave(fd) && ttyname_r(fd, path, sizeof(path)) == 0)
183
+ r = uv__open_cloexec(path, mode | O_NOCTTY);
184
+ else
185
+ r = -1;
66
186
 
67
187
  if (r < 0) {
68
188
  /* fallback to using blocking writes */
69
- if (!readable)
70
- flags |= UV_STREAM_BLOCKING;
189
+ if (mode != O_RDONLY)
190
+ flags |= UV_HANDLE_BLOCKING_WRITES;
71
191
  goto skip;
72
192
  }
73
193
 
74
194
  newfd = r;
75
195
 
76
196
  r = uv__dup2_cloexec(newfd, fd);
77
- if (r < 0 && r != -EINVAL) {
197
+ if (r < 0 && r != UV_EINVAL) {
78
198
  /* EINVAL means newfd == fd which could conceivably happen if another
79
199
  * thread called close(fd) between our calls to isatty() and open().
80
200
  * That's a rather unlikely event but let's handle it anyway.
@@ -93,23 +213,27 @@ skip:
93
213
  * the handle queue, since it was added by uv__handle_init in uv_stream_init.
94
214
  */
95
215
 
216
+ if (!(flags & UV_HANDLE_BLOCKING_WRITES))
217
+ uv__nonblock(fd, 1);
218
+
96
219
  #if defined(__APPLE__)
97
220
  r = uv__stream_try_select((uv_stream_t*) tty, &fd);
98
221
  if (r) {
222
+ int rc = r;
99
223
  if (newfd != -1)
100
224
  uv__close(newfd);
101
- QUEUE_REMOVE(&tty->handle_queue);
102
- return r;
225
+ uv__queue_remove(&tty->handle_queue);
226
+ do
227
+ r = fcntl(fd, F_SETFL, saved_flags);
228
+ while (r == -1 && errno == EINTR);
229
+ return rc;
103
230
  }
104
231
  #endif
105
232
 
106
- if (readable)
107
- flags |= UV_STREAM_READABLE;
108
- else
109
- flags |= UV_STREAM_WRITABLE;
110
-
111
- if (!(flags & UV_STREAM_BLOCKING))
112
- uv__nonblock(fd, 1);
233
+ if (mode != O_WRONLY)
234
+ flags |= UV_HANDLE_READABLE;
235
+ if (mode != O_RDONLY)
236
+ flags |= UV_HANDLE_WRITABLE;
113
237
 
114
238
  uv__stream_open((uv_stream_t*) tty, fd, flags);
115
239
  tty->mode = UV_TTY_MODE_NORMAL;
@@ -120,7 +244,7 @@ skip:
120
244
  static void uv__tty_make_raw(struct termios* tio) {
121
245
  assert(tio != NULL);
122
246
 
123
- #ifdef __sun
247
+ #if defined __sun || defined __MVS__
124
248
  /*
125
249
  * This implementation of cfmakeraw for Solaris and derivatives is taken from
126
250
  * http://www.perkin.org.uk/posts/solaris-portability-cfmakeraw.html.
@@ -131,6 +255,24 @@ static void uv__tty_make_raw(struct termios* tio) {
131
255
  tio->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
132
256
  tio->c_cflag &= ~(CSIZE | PARENB);
133
257
  tio->c_cflag |= CS8;
258
+
259
+ /*
260
+ * By default, most software expects a pending read to block until at
261
+ * least one byte becomes available. As per termio(7I), this requires
262
+ * setting the MIN and TIME parameters appropriately.
263
+ *
264
+ * As a somewhat unfortunate artifact of history, the MIN and TIME slots
265
+ * in the control character array overlap with the EOF and EOL slots used
266
+ * for canonical mode processing. Because the EOF character needs to be
267
+ * the ASCII EOT value (aka Control-D), it has the byte value 4. When
268
+ * switching to raw mode, this is interpreted as a MIN value of 4; i.e.,
269
+ * reads will block until at least four bytes have been input.
270
+ *
271
+ * Other platforms with a distinct MIN slot like Linux and FreeBSD appear
272
+ * to default to a MIN value of 1, so we'll force that value here:
273
+ */
274
+ tio->c_cc[VMIN] = 1;
275
+ tio->c_cc[VTIME] = 0;
134
276
  #else
135
277
  cfmakeraw(tio);
136
278
  #endif /* #ifdef __sun */
@@ -138,23 +280,33 @@ static void uv__tty_make_raw(struct termios* tio) {
138
280
 
139
281
  int uv_tty_set_mode(uv_tty_t* tty, uv_tty_mode_t mode) {
140
282
  struct termios tmp;
283
+ int expected;
141
284
  int fd;
285
+ int rc;
142
286
 
143
287
  if (tty->mode == (int) mode)
144
288
  return 0;
145
289
 
146
290
  fd = uv__stream_fd(tty);
147
291
  if (tty->mode == UV_TTY_MODE_NORMAL && mode != UV_TTY_MODE_NORMAL) {
148
- if (tcgetattr(fd, &tty->orig_termios))
149
- return -errno;
292
+ do
293
+ rc = tcgetattr(fd, &tty->orig_termios);
294
+ while (rc == -1 && errno == EINTR);
295
+
296
+ if (rc == -1)
297
+ return UV__ERR(errno);
150
298
 
151
299
  /* This is used for uv_tty_reset_mode() */
152
- uv_spinlock_lock(&termios_spinlock);
300
+ do
301
+ expected = 0;
302
+ while (!atomic_compare_exchange_strong(&termios_spinlock, &expected, 1));
303
+
153
304
  if (orig_termios_fd == -1) {
154
305
  orig_termios = tty->orig_termios;
155
306
  orig_termios_fd = fd;
156
307
  }
157
- uv_spinlock_unlock(&termios_spinlock);
308
+
309
+ atomic_store(&termios_spinlock, 0);
158
310
  }
159
311
 
160
312
  tmp = tty->orig_termios;
@@ -175,19 +327,55 @@ int uv_tty_set_mode(uv_tty_t* tty, uv_tty_mode_t mode) {
175
327
  }
176
328
 
177
329
  /* Apply changes after draining */
178
- if (tcsetattr(fd, TCSADRAIN, &tmp))
179
- return -errno;
330
+ rc = uv__tcsetattr(fd, TCSADRAIN, &tmp);
331
+ if (rc == 0)
332
+ tty->mode = mode;
180
333
 
181
- tty->mode = mode;
182
- return 0;
334
+ return rc;
335
+ }
336
+
337
+
338
+ void uv__tty_close(uv_tty_t* handle) {
339
+ int expected;
340
+ int fd;
341
+
342
+ fd = handle->io_watcher.fd;
343
+ if (fd == -1)
344
+ goto done;
345
+
346
+ /* This is used for uv_tty_reset_mode() */
347
+ do
348
+ expected = 0;
349
+ while (!atomic_compare_exchange_strong(&termios_spinlock, &expected, 1));
350
+
351
+ if (fd == orig_termios_fd) {
352
+ /* XXX(bnoordhuis) the tcsetattr is probably wrong when there are still
353
+ * other uv_tty_t handles active that refer to the same tty/pty but it's
354
+ * hard to recognize that particular situation without maintaining some
355
+ * kind of process-global data structure, and that still won't work in a
356
+ * multi-process setup.
357
+ */
358
+ uv__tcsetattr(fd, TCSANOW, &orig_termios);
359
+ orig_termios_fd = -1;
360
+ }
361
+
362
+ atomic_store(&termios_spinlock, 0);
363
+
364
+ done:
365
+ uv__stream_close((uv_stream_t*) handle);
183
366
  }
184
367
 
185
368
 
186
369
  int uv_tty_get_winsize(uv_tty_t* tty, int* width, int* height) {
187
370
  struct winsize ws;
371
+ int err;
188
372
 
189
- if (ioctl(uv__stream_fd(tty), TIOCGWINSZ, &ws))
190
- return -errno;
373
+ do
374
+ err = ioctl(uv__stream_fd(tty), TIOCGWINSZ, &ws);
375
+ while (err == -1 && errno == EINTR);
376
+
377
+ if (err == -1)
378
+ return UV__ERR(errno);
191
379
 
192
380
  *width = ws.ws_col;
193
381
  *height = ws.ws_row;
@@ -197,7 +385,7 @@ int uv_tty_get_winsize(uv_tty_t* tty, int* width, int* height) {
197
385
 
198
386
 
199
387
  uv_handle_type uv_guess_handle(uv_file file) {
200
- struct sockaddr sa;
388
+ struct sockaddr_storage ss;
201
389
  struct stat s;
202
390
  socklen_t len;
203
391
  int type;
@@ -208,8 +396,24 @@ uv_handle_type uv_guess_handle(uv_file file) {
208
396
  if (isatty(file))
209
397
  return UV_TTY;
210
398
 
211
- if (fstat(file, &s))
399
+ if (uv__fstat(file, &s)) {
400
+ #if defined(__PASE__)
401
+ /* On ibmi receiving RST from TCP instead of FIN immediately puts fd into
402
+ * an error state. fstat will return EINVAL, getsockname will also return
403
+ * EINVAL, even if sockaddr_storage is valid. (If file does not refer to a
404
+ * socket, ENOTSOCK is returned instead.)
405
+ * In such cases, we will permit the user to open the connection as uv_tcp
406
+ * still, so that the user can get immediately notified of the error in
407
+ * their read callback and close this fd.
408
+ */
409
+ len = sizeof(ss);
410
+ if (getsockname(file, (struct sockaddr*) &ss, &len)) {
411
+ if (errno == EINVAL)
412
+ return UV_TCP;
413
+ }
414
+ #endif
212
415
  return UV_UNKNOWN_HANDLE;
416
+ }
213
417
 
214
418
  if (S_ISREG(s.st_mode))
215
419
  return UV_FILE;
@@ -223,31 +427,44 @@ uv_handle_type uv_guess_handle(uv_file file) {
223
427
  if (!S_ISSOCK(s.st_mode))
224
428
  return UV_UNKNOWN_HANDLE;
225
429
 
226
- len = sizeof(type);
227
- if (getsockopt(file, SOL_SOCKET, SO_TYPE, &type, &len))
430
+ len = sizeof(ss);
431
+ if (getsockname(file, (struct sockaddr*) &ss, &len)) {
432
+ #if defined(_AIX)
433
+ /* On aix receiving RST from TCP instead of FIN immediately puts fd into
434
+ * an error state. In such case getsockname will return EINVAL, even if
435
+ * sockaddr_storage is valid.
436
+ * In such cases, we will permit the user to open the connection as uv_tcp
437
+ * still, so that the user can get immediately notified of the error in
438
+ * their read callback and close this fd.
439
+ */
440
+ if (errno == EINVAL) {
441
+ return UV_TCP;
442
+ }
443
+ #endif
228
444
  return UV_UNKNOWN_HANDLE;
445
+ }
229
446
 
230
- len = sizeof(sa);
231
- if (getsockname(file, &sa, &len))
447
+ len = sizeof(type);
448
+ if (getsockopt(file, SOL_SOCKET, SO_TYPE, &type, &len))
232
449
  return UV_UNKNOWN_HANDLE;
233
450
 
234
451
  if (type == SOCK_DGRAM)
235
- if (sa.sa_family == AF_INET || sa.sa_family == AF_INET6)
452
+ if (ss.ss_family == AF_INET || ss.ss_family == AF_INET6)
236
453
  return UV_UDP;
237
454
 
238
455
  if (type == SOCK_STREAM) {
239
- #if defined(_AIX)
240
- /* on AIX the getsockname call returns an empty sa structure
456
+ #if defined(_AIX) || defined(__DragonFly__)
457
+ /* on AIX/DragonFly the getsockname call returns an empty sa structure
241
458
  * for sockets of type AF_UNIX. For all other types it will
242
459
  * return a properly filled in structure.
243
460
  */
244
461
  if (len == 0)
245
462
  return UV_NAMED_PIPE;
246
- #endif /* defined(_AIX) */
463
+ #endif /* defined(_AIX) || defined(__DragonFly__) */
247
464
 
248
- if (sa.sa_family == AF_INET || sa.sa_family == AF_INET6)
465
+ if (ss.ss_family == AF_INET || ss.ss_family == AF_INET6)
249
466
  return UV_TCP;
250
- if (sa.sa_family == AF_UNIX)
467
+ if (ss.ss_family == AF_UNIX)
251
468
  return UV_NAMED_PIPE;
252
469
  }
253
470
 
@@ -264,16 +481,23 @@ int uv_tty_reset_mode(void) {
264
481
  int err;
265
482
 
266
483
  saved_errno = errno;
267
- if (!uv_spinlock_trylock(&termios_spinlock))
268
- return -EBUSY; /* In uv_tty_set_mode(). */
484
+
485
+ if (atomic_exchange(&termios_spinlock, 1))
486
+ return UV_EBUSY; /* In uv_tty_set_mode() or uv__tty_close(). */
269
487
 
270
488
  err = 0;
271
489
  if (orig_termios_fd != -1)
272
- if (tcsetattr(orig_termios_fd, TCSANOW, &orig_termios))
273
- err = -errno;
490
+ err = uv__tcsetattr(orig_termios_fd, TCSANOW, &orig_termios);
274
491
 
275
- uv_spinlock_unlock(&termios_spinlock);
492
+ atomic_store(&termios_spinlock, 0);
276
493
  errno = saved_errno;
277
494
 
278
495
  return err;
279
496
  }
497
+
498
+ void uv_tty_set_vterm_state(uv_tty_vtermstate_t state) {
499
+ }
500
+
501
+ int uv_tty_get_vterm_state(uv_tty_vtermstate_t* state) {
502
+ return UV_ENOTSUP;
503
+ }