passenger 6.2.0 → 6.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (650) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +33 -1
  3. data/CONTRIBUTING.md +7 -311
  4. data/CONTRIBUTORS +1 -0
  5. data/LICENSE +1 -1
  6. data/README.md +1 -1
  7. data/Rakefile +1 -1
  8. data/bin/passenger +1 -1
  9. data/bin/passenger-config +1 -1
  10. data/bin/passenger-install-apache2-module +1 -1
  11. data/bin/passenger-install-nginx-module +4 -9
  12. data/bin/passenger-memory-stats +1 -1
  13. data/bin/passenger-status +1 -1
  14. data/build/agent.rb +13 -15
  15. data/build/apache2.rb +13 -16
  16. data/build/basics.rb +10 -13
  17. data/build/common_library.rb +5 -9
  18. data/build/cxx_tests.rb +37 -12
  19. data/build/integration_tests.rb +5 -2
  20. data/build/misc.rb +1 -1
  21. data/build/nginx.rb +1 -1
  22. data/build/node_tests.rb +1 -1
  23. data/build/oxt_tests.rb +6 -8
  24. data/build/packaging.rb +1 -1
  25. data/build/ruby_extension.rb +1 -1
  26. data/build/ruby_tests.rb +1 -1
  27. data/build/schema_printer.rb +13 -15
  28. data/build/support/cplusplus.rb +61 -69
  29. data/build/support/cxx_dependency_map.rb +2 -1
  30. data/build/support/general.rb +1 -1
  31. data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
  32. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +1 -1
  33. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +1 -1
  34. data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
  35. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  36. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +1 -1
  37. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +1 -1
  38. data/build/test_basics.rb +1 -1
  39. data/dev/copy_boost_headers +1 -1
  40. data/dev/index_cxx_dependencies.rb +5 -1
  41. data/dev/libev-changes.patch +108 -0
  42. data/dev/nginx_version_sha256 +1 -1
  43. data/dev/ruby_server.rb +1 -6
  44. data/dev/upgrading_libuv.sh +16 -0
  45. data/doc/BasicArchitectureOverview.md +55 -0
  46. data/doc/BuildCaching.md +23 -0
  47. data/doc/BuildSystem.md +49 -0
  48. data/doc/DebuggingAndStressTesting.md +2 -0
  49. data/doc/DesignAspects/LimitedGemDependencies.md +1 -0
  50. data/doc/DevEnvironmentSetup.md +46 -0
  51. data/doc/DevHandbook.md +28 -0
  52. data/doc/Packaging.md +1 -1
  53. data/doc/RunningTests.md +88 -0
  54. data/doc/{TempFileHandling.md → SecureTempFileHandling.md} +1 -1
  55. data/doc/{CxxTestingGuide.md → WritingCxxTests.md} +1 -20
  56. data/src/agent/AgentMain.cpp +1 -1
  57. data/src/agent/Core/ApiServer.h +1 -1
  58. data/src/agent/Core/ApplicationPool/AbstractSession.h +1 -1
  59. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +1 -1
  60. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +1 -1
  61. data/src/agent/Core/ApplicationPool/Common.h +1 -1
  62. data/src/agent/Core/ApplicationPool/Context.h +1 -1
  63. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +1 -1
  64. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +1 -1
  65. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +1 -1
  66. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +1 -1
  67. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  68. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
  69. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +1 -1
  70. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +1 -1
  71. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -1
  72. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +1 -1
  73. data/src/agent/Core/ApplicationPool/Group.h +1 -1
  74. data/src/agent/Core/ApplicationPool/Implementation.cpp +1 -1
  75. data/src/agent/Core/ApplicationPool/Options.h +1 -1
  76. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +1 -1
  77. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
  78. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +1 -1
  79. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +1 -1
  80. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +1 -1
  81. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +1 -1
  82. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
  83. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  84. data/src/agent/Core/ApplicationPool/Pool.h +1 -1
  85. data/src/agent/Core/ApplicationPool/Process.cpp +1 -1
  86. data/src/agent/Core/ApplicationPool/Process.h +1 -1
  87. data/src/agent/Core/ApplicationPool/Session.h +1 -1
  88. data/src/agent/Core/ApplicationPool/Socket.h +1 -1
  89. data/src/agent/Core/ApplicationPool/TestSession.h +1 -1
  90. data/src/agent/Core/Config.h +3 -2
  91. data/src/agent/Core/ConfigChange.cpp +1 -1
  92. data/src/agent/Core/ConfigChange.h +1 -1
  93. data/src/agent/Core/Controller/AppResponse.h +1 -1
  94. data/src/agent/Core/Controller/BufferBody.cpp +1 -1
  95. data/src/agent/Core/Controller/CheckoutSession.cpp +8 -5
  96. data/src/agent/Core/Controller/Client.h +1 -1
  97. data/src/agent/Core/Controller/Config.cpp +1 -1
  98. data/src/agent/Core/Controller/Config.h +2 -2
  99. data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
  100. data/src/agent/Core/Controller/Hooks.cpp +12 -9
  101. data/src/agent/Core/Controller/Implementation.cpp +1 -1
  102. data/src/agent/Core/Controller/InitRequest.cpp +1 -1
  103. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -1
  104. data/src/agent/Core/Controller/InternalUtils.cpp +1 -1
  105. data/src/agent/Core/Controller/Miscellaneous.cpp +1 -1
  106. data/src/agent/Core/Controller/Request.h +1 -1
  107. data/src/agent/Core/Controller/SendRequest.cpp +1 -1
  108. data/src/agent/Core/Controller/StateInspection.cpp +1 -1
  109. data/src/agent/Core/Controller/TurboCaching.h +1 -1
  110. data/src/agent/Core/Controller.h +1 -1
  111. data/src/agent/Core/CoreMain.cpp +1 -1
  112. data/src/agent/Core/OptionParser.h +1 -1
  113. data/src/agent/Core/ResponseCache.h +1 -1
  114. data/src/agent/Core/SecurityUpdateChecker.h +1 -1
  115. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +1 -1
  116. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +1 -1
  117. data/src/agent/Core/SpawningKit/Config.h +1 -1
  118. data/src/agent/Core/SpawningKit/Context.h +1 -1
  119. data/src/agent/Core/SpawningKit/DirectSpawner.h +1 -1
  120. data/src/agent/Core/SpawningKit/DummySpawner.h +1 -1
  121. data/src/agent/Core/SpawningKit/ErrorRenderer.h +1 -1
  122. data/src/agent/Core/SpawningKit/Exceptions.h +63 -2
  123. data/src/agent/Core/SpawningKit/Factory.h +1 -1
  124. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
  125. data/src/agent/Core/SpawningKit/Handshake/Perform.h +3 -2
  126. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  127. data/src/agent/Core/SpawningKit/Handshake/Session.h +1 -1
  128. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +1 -1
  129. data/src/agent/Core/SpawningKit/Journey.h +1 -1
  130. data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
  131. data/src/agent/Core/SpawningKit/README.md +3 -3
  132. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +1 -1
  133. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +1 -1
  134. data/src/agent/Core/SpawningKit/Result.h +1 -1
  135. data/src/agent/Core/SpawningKit/SmartSpawner.h +17 -17
  136. data/src/agent/Core/SpawningKit/Spawner.h +1 -1
  137. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -1
  138. data/src/agent/Core/TelemetryCollector.h +1 -1
  139. data/src/agent/ExecHelper/ExecHelperMain.cpp +1 -1
  140. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +1 -1
  141. data/src/agent/MainFunctions.h +1 -1
  142. data/src/agent/Shared/ApiAccountUtils.h +4 -3
  143. data/src/agent/Shared/ApiServerUtils.h +1 -2
  144. data/src/agent/Shared/ApplicationPoolApiKey.h +1 -1
  145. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +1 -1
  146. data/src/agent/Shared/Fundamentals/AbortHandler.h +1 -1
  147. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
  148. data/src/agent/Shared/Fundamentals/Initialization.h +1 -1
  149. data/src/agent/Shared/Fundamentals/Utils.cpp +1 -1
  150. data/src/agent/Shared/Fundamentals/Utils.h +1 -1
  151. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +1 -1
  152. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -1
  153. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +1 -1
  154. data/src/agent/Watchdog/ApiServer.h +7 -6
  155. data/src/agent/Watchdog/Config.h +2 -2
  156. data/src/apache2_module/Bucket.cpp +1 -1
  157. data/src/apache2_module/Bucket.h +1 -1
  158. data/src/apache2_module/CBindings.cpp +1 -1
  159. data/src/apache2_module/Config.cpp +1 -1
  160. data/src/apache2_module/Config.h +1 -1
  161. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +104 -104
  162. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  163. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +1 -1
  164. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +1 -1
  165. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +1 -1
  166. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +1 -1
  167. data/src/apache2_module/ConfigGeneral/Common.h +1 -1
  168. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +1 -1
  169. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +1 -1
  170. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +1 -1
  171. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +1 -1
  172. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +1 -1
  173. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +1 -1
  174. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +1 -1
  175. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
  176. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +1 -1
  177. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +1 -1
  178. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +1 -1
  179. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  180. data/src/apache2_module/DirectoryMapper.h +1 -1
  181. data/src/apache2_module/Hooks.cpp +8 -2
  182. data/src/apache2_module/Hooks.h +1 -1
  183. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +1 -1
  184. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
  185. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +1 -1
  186. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  187. data/src/apache2_module/Utils.h +1 -1
  188. data/src/apache2_module/mod_passenger.c +1 -1
  189. data/src/cxx_supportlib/Algorithms/Hasher.cpp +1 -1
  190. data/src/cxx_supportlib/Algorithms/Hasher.h +1 -1
  191. data/src/cxx_supportlib/Algorithms/MovingAverage.h +1 -1
  192. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +1 -1
  193. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +1 -1
  194. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +1 -1
  195. data/src/cxx_supportlib/AppTypeDetector/Detector.h +1 -1
  196. data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
  197. data/src/cxx_supportlib/BackgroundEventLoop.h +1 -1
  198. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +1 -1
  199. data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
  200. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
  201. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +1 -1
  202. data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +1 -3
  203. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +3 -3
  204. data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
  205. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +1 -1
  206. data/src/cxx_supportlib/ConfigKit/Store.h +1 -1
  207. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +1 -1
  208. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +1 -1
  209. data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
  210. data/src/cxx_supportlib/ConfigKit/Utils.h +1 -1
  211. data/src/cxx_supportlib/Constants.h +2 -2
  212. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +1 -1
  213. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +1 -1
  214. data/src/cxx_supportlib/DataStructures/LString.cpp +1 -1
  215. data/src/cxx_supportlib/DataStructures/LString.h +1 -1
  216. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
  217. data/src/cxx_supportlib/DataStructures/StringMap.h +1 -1
  218. data/src/cxx_supportlib/Exceptions.cpp +1 -1
  219. data/src/cxx_supportlib/Exceptions.h +1 -1
  220. data/src/cxx_supportlib/FileDescriptor.h +1 -1
  221. data/src/cxx_supportlib/FileTools/FileManip.cpp +1 -1
  222. data/src/cxx_supportlib/FileTools/FileManip.h +1 -1
  223. data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
  224. data/src/cxx_supportlib/FileTools/PathManip.h +1 -1
  225. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +1 -1
  226. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +1 -1
  227. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +1 -1
  228. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +1 -1
  229. data/src/cxx_supportlib/Hooks.h +1 -1
  230. data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
  231. data/src/cxx_supportlib/IOTools/IOUtils.cpp +10 -10
  232. data/src/cxx_supportlib/IOTools/IOUtils.h +1 -1
  233. data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
  234. data/src/cxx_supportlib/IOTools/MessageSerialization.h +1 -1
  235. data/src/cxx_supportlib/InstanceDirectory.h +1 -1
  236. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +1 -1
  237. data/src/cxx_supportlib/JsonTools/Autocast.h +1 -1
  238. data/src/cxx_supportlib/JsonTools/CBindings.cpp +1 -1
  239. data/src/cxx_supportlib/JsonTools/CBindings.h +1 -1
  240. data/src/cxx_supportlib/JsonTools/JsonUtils.h +1 -1
  241. data/src/cxx_supportlib/LoggingKit/Assert.h +1 -1
  242. data/src/cxx_supportlib/LoggingKit/Config.h +2 -1
  243. data/src/cxx_supportlib/LoggingKit/Context.h +1 -1
  244. data/src/cxx_supportlib/LoggingKit/Forward.h +1 -1
  245. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +11 -1
  246. data/src/cxx_supportlib/LoggingKit/Logging.h +1 -1
  247. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +1 -1
  248. data/src/cxx_supportlib/LveLoggingDecorator.h +1 -1
  249. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +1 -1
  250. data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
  251. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  252. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  253. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +1 -1
  254. data/src/cxx_supportlib/ProcessManagement/Ruby.h +1 -1
  255. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +1 -1
  256. data/src/cxx_supportlib/ProcessManagement/Spawn.h +1 -1
  257. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
  258. data/src/cxx_supportlib/ProcessManagement/Utils.h +1 -1
  259. data/src/cxx_supportlib/RandomGenerator.h +1 -1
  260. data/src/cxx_supportlib/ResourceLocator.h +1 -1
  261. data/src/cxx_supportlib/SafeLibev.h +1 -1
  262. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +9 -27
  263. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -2
  264. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +1 -1
  265. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -1
  266. data/src/cxx_supportlib/ServerKit/Channel.h +1 -1
  267. data/src/cxx_supportlib/ServerKit/Client.h +1 -1
  268. data/src/cxx_supportlib/ServerKit/ClientRef.h +1 -1
  269. data/src/cxx_supportlib/ServerKit/Config.h +1 -1
  270. data/src/cxx_supportlib/ServerKit/Context.h +1 -1
  271. data/src/cxx_supportlib/ServerKit/CookieUtils.h +1 -1
  272. data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
  273. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +1 -1
  274. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +1 -1
  275. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +54 -2
  276. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +1 -1
  277. data/src/cxx_supportlib/ServerKit/HeaderTable.h +1 -1
  278. data/src/cxx_supportlib/ServerKit/Hooks.h +1 -1
  279. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  280. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +1 -1
  281. data/src/cxx_supportlib/ServerKit/HttpClient.h +1 -1
  282. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
  283. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
  284. data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
  285. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +1 -1
  286. data/src/cxx_supportlib/ServerKit/HttpServer.h +1 -1
  287. data/src/cxx_supportlib/ServerKit/Implementation.cpp +1 -1
  288. data/src/cxx_supportlib/ServerKit/Server.h +4 -2
  289. data/src/cxx_supportlib/StaticString.h +1 -1
  290. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  291. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +1 -1
  292. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +1 -1
  293. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +1 -1
  294. data/src/cxx_supportlib/StrIntTools/StringScanning.h +1 -1
  295. data/src/cxx_supportlib/StrIntTools/Template.h +1 -1
  296. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +1 -1
  297. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  298. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +1 -1
  299. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +1 -1
  300. data/src/cxx_supportlib/SystemTools/SystemTime.h +1 -1
  301. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +1 -1
  302. data/src/cxx_supportlib/SystemTools/UserDatabase.h +1 -1
  303. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +1 -1
  304. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +1 -1
  305. data/src/cxx_supportlib/Utils/BlockingQueue.h +1 -1
  306. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +1 -1
  307. data/src/cxx_supportlib/Utils/CachedFileStat.h +1 -1
  308. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +1 -1
  309. data/src/cxx_supportlib/Utils/ClassUtils.h +1 -1
  310. data/src/cxx_supportlib/Utils/Curl.h +1 -1
  311. data/src/cxx_supportlib/Utils/FastStringStream.h +1 -1
  312. data/src/cxx_supportlib/Utils/FileChangeChecker.h +1 -1
  313. data/src/cxx_supportlib/Utils/HttpConstants.h +1 -1
  314. data/src/cxx_supportlib/Utils/IniFile.h +1 -1
  315. data/src/cxx_supportlib/Utils/MessagePassing.h +1 -1
  316. data/src/cxx_supportlib/Utils/OptionParsing.h +1 -1
  317. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +1 -1
  318. data/src/cxx_supportlib/Utils/ScopeGuard.h +1 -1
  319. data/src/cxx_supportlib/Utils/SpeedMeter.h +1 -1
  320. data/src/cxx_supportlib/Utils/Timer.h +1 -1
  321. data/src/cxx_supportlib/Utils/VariantMap.h +1 -1
  322. data/src/cxx_supportlib/Utils.cpp +1 -1
  323. data/src/cxx_supportlib/Utils.h +1 -1
  324. data/src/cxx_supportlib/WatchdogLauncher.cpp +1 -1
  325. data/src/cxx_supportlib/WatchdogLauncher.h +1 -1
  326. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +1 -1
  327. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +1 -1
  328. data/src/cxx_supportlib/WrapperRegistry/Entry.h +1 -1
  329. data/src/cxx_supportlib/WrapperRegistry/Registry.h +1 -1
  330. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  331. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  332. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  333. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  334. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
  335. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
  336. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  337. data/src/cxx_supportlib/oxt/implementation.cpp +1 -1
  338. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  340. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  342. data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
  343. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  344. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  345. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +1 -1
  346. data/src/cxx_supportlib/vendor-copy/libuv/AUTHORS +353 -3
  347. data/src/cxx_supportlib/vendor-copy/libuv/ChangeLog +3981 -2
  348. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE +1 -28
  349. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-docs +396 -0
  350. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-extra +36 -0
  351. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.am +275 -58
  352. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.in +4380 -2125
  353. data/src/cxx_supportlib/vendor-copy/libuv/aclocal.m4 +425 -221
  354. data/src/cxx_supportlib/vendor-copy/libuv/ar-lib +30 -10
  355. data/src/cxx_supportlib/vendor-copy/libuv/compile +31 -14
  356. data/src/cxx_supportlib/vendor-copy/libuv/config.guess +1084 -690
  357. data/src/cxx_supportlib/vendor-copy/libuv/config.sub +1844 -1297
  358. data/src/cxx_supportlib/vendor-copy/libuv/configure +6935 -3664
  359. data/src/cxx_supportlib/vendor-copy/libuv/configure.ac +43 -19
  360. data/src/cxx_supportlib/vendor-copy/libuv/depcomp +12 -11
  361. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-darwin.h → uv/darwin.h} +3 -3
  362. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-errno.h → uv/errno.h} +119 -60
  363. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-linux.h → uv/linux.h} +1 -1
  364. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/os390.h +33 -0
  365. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/posix.h +31 -0
  366. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-threadpool.h → uv/threadpool.h} +1 -1
  367. data/src/cxx_supportlib/vendor-copy/libuv/include/{tree.h → uv/tree.h} +3 -250
  368. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-unix.h → uv/unix.h} +186 -60
  369. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-version.h → uv/version.h} +3 -3
  370. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/win.h +703 -0
  371. data/src/cxx_supportlib/vendor-copy/libuv/include/uv.h +528 -40
  372. data/src/cxx_supportlib/vendor-copy/libuv/install-sh +110 -70
  373. data/src/cxx_supportlib/vendor-copy/libuv/libuv-static.pc.in +12 -0
  374. data/src/cxx_supportlib/vendor-copy/libuv/libuv.pc.in +4 -2
  375. data/src/cxx_supportlib/vendor-copy/libuv/ltmain.sh +995 -619
  376. data/src/cxx_supportlib/vendor-copy/libuv/m4/ax_pthread.m4 +485 -0
  377. data/src/cxx_supportlib/vendor-copy/libuv/m4/libtool.m4 +438 -289
  378. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-flags.m4 +21 -4
  379. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-versions.m4 +7 -0
  380. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltoptions.m4 +69 -39
  381. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltsugar.m4 +1 -1
  382. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltversion.m4 +7 -6
  383. data/src/cxx_supportlib/vendor-copy/libuv/m4/lt~obsolete.m4 +2 -2
  384. data/src/cxx_supportlib/vendor-copy/libuv/missing +55 -34
  385. data/src/cxx_supportlib/vendor-copy/libuv/src/fs-poll.c +52 -20
  386. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.c +560 -0
  387. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.h +31 -0
  388. data/src/cxx_supportlib/vendor-copy/libuv/src/inet.c +5 -16
  389. data/src/cxx_supportlib/vendor-copy/libuv/src/queue.h +68 -86
  390. data/src/cxx_supportlib/vendor-copy/libuv/src/random.c +123 -0
  391. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.c +38 -0
  392. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.h +39 -0
  393. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.c +52 -0
  394. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.h +27 -0
  395. data/src/cxx_supportlib/vendor-copy/libuv/src/thread-common.c +175 -0
  396. data/src/cxx_supportlib/vendor-copy/libuv/src/threadpool.c +172 -57
  397. data/src/cxx_supportlib/vendor-copy/libuv/src/{unix/timer.c → timer.c} +57 -29
  398. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix-common.c +89 -0
  399. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix.c +418 -256
  400. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/async.c +168 -129
  401. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-ifaddrs.c +163 -0
  402. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-proctitle.c +99 -0
  403. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/core.c +1312 -378
  404. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/cygwin.c +93 -0
  405. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-proctitle.c +18 -32
  406. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-stub.h +97 -0
  407. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-syscalls.h +17 -0
  408. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin.c +41 -139
  409. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/dl.c +1 -1
  410. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/freebsd.c +75 -235
  411. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fs.c +1308 -299
  412. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fsevents.c +150 -148
  413. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getaddrinfo.c +58 -8
  414. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getnameinfo.c +3 -2
  415. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/haiku.c +172 -0
  416. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/hurd.c +172 -0
  417. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/ibmi.c +542 -0
  418. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/internal.h +297 -106
  419. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/kqueue.c +325 -94
  420. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux.c +2708 -0
  421. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop-watcher.c +11 -11
  422. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop.c +105 -24
  423. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/netbsd.c +51 -157
  424. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-fsevents.c +42 -0
  425. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-proctitle.c +45 -0
  426. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/openbsd.c +42 -183
  427. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-proctitle.c +136 -0
  428. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.c +536 -0
  429. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.h +75 -0
  430. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390.c +1070 -0
  431. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pipe.c +324 -55
  432. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/poll.c +58 -11
  433. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-hrtime.c +36 -0
  434. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-poll.c +385 -0
  435. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/process.c +795 -248
  436. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/procfs-exepath.c +45 -0
  437. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/proctitle.c +77 -22
  438. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/qnx.c +142 -0
  439. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-devurandom.c +93 -0
  440. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getentropy.c +57 -0
  441. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getrandom.c +86 -0
  442. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-sysctl-linux.c +99 -0
  443. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/signal.c +147 -39
  444. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/stream.c +426 -474
  445. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sunos.c +240 -98
  446. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-loadavg.c +36 -0
  447. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-memory.c +42 -0
  448. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tcp.c +402 -91
  449. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/thread.c +497 -145
  450. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tty.c +269 -45
  451. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/udp.c +695 -165
  452. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.c +463 -61
  453. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.h +248 -44
  454. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-data-getter-setters.c +119 -0
  455. data/src/cxx_supportlib/vendor-copy/libuv/tsansupp.txt +2 -0
  456. data/src/cxx_supportlib/vendor-modified/libev/Changes +109 -0
  457. data/src/cxx_supportlib/vendor-modified/libev/Makefile.am +2 -1
  458. data/src/cxx_supportlib/vendor-modified/libev/Makefile.in +47 -33
  459. data/src/cxx_supportlib/vendor-modified/libev/README +2 -1
  460. data/src/cxx_supportlib/vendor-modified/libev/aclocal.m4 +1653 -1224
  461. data/src/cxx_supportlib/vendor-modified/libev/config.guess +376 -316
  462. data/src/cxx_supportlib/vendor-modified/libev/config.h.in +13 -2
  463. data/src/cxx_supportlib/vendor-modified/libev/config.sub +156 -154
  464. data/src/cxx_supportlib/vendor-modified/libev/configure +1431 -940
  465. data/src/cxx_supportlib/vendor-modified/libev/configure.ac +3 -3
  466. data/src/cxx_supportlib/vendor-modified/libev/depcomp +5 -5
  467. data/src/cxx_supportlib/vendor-modified/libev/ev++.h +109 -107
  468. data/src/cxx_supportlib/vendor-modified/libev/ev.c +807 -319
  469. data/src/cxx_supportlib/vendor-modified/libev/ev.h +111 -105
  470. data/src/cxx_supportlib/vendor-modified/libev/ev_epoll.c +42 -29
  471. data/src/cxx_supportlib/vendor-modified/libev/ev_iouring.c +694 -0
  472. data/src/cxx_supportlib/vendor-modified/libev/ev_kqueue.c +15 -9
  473. data/src/cxx_supportlib/vendor-modified/libev/ev_linuxaio.c +620 -0
  474. data/src/cxx_supportlib/vendor-modified/libev/ev_poll.c +19 -14
  475. data/src/cxx_supportlib/vendor-modified/libev/ev_port.c +8 -5
  476. data/src/cxx_supportlib/vendor-modified/libev/ev_select.c +6 -6
  477. data/src/cxx_supportlib/vendor-modified/libev/ev_vars.h +48 -3
  478. data/src/cxx_supportlib/vendor-modified/libev/ev_win32.c +2 -2
  479. data/src/cxx_supportlib/vendor-modified/libev/ev_wrap.h +72 -0
  480. data/src/cxx_supportlib/vendor-modified/libev/install-sh +23 -13
  481. data/src/cxx_supportlib/vendor-modified/libev/libev.m4 +6 -1
  482. data/src/cxx_supportlib/vendor-modified/libev/ltmain.sh +3581 -1993
  483. data/src/cxx_supportlib/vendor-modified/libev/missing +8 -8
  484. data/src/cxx_supportlib/vendor-modified/libev/mkinstalldirs +3 -3
  485. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +1 -1
  486. data/src/helper-scripts/backtrace-sanitizer.rb +1 -1
  487. data/src/helper-scripts/crash-watch.rb +1 -1
  488. data/src/helper-scripts/download_binaries/extconf.rb +1 -1
  489. data/src/helper-scripts/meteor-loader.rb +1 -1
  490. data/src/helper-scripts/node-loader.js +1 -1
  491. data/src/helper-scripts/prespawn +1 -1
  492. data/src/helper-scripts/rack-loader.rb +1 -1
  493. data/src/helper-scripts/rack-preloader.rb +1 -1
  494. data/src/helper-scripts/wsgi-loader.py +1 -1
  495. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +1 -1
  496. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +1 -1
  497. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +1 -1
  498. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +1 -1
  499. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +1 -1
  500. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +1 -1
  501. data/src/nginx_module/Configuration.c +1 -1
  502. data/src/nginx_module/Configuration.h +1 -1
  503. data/src/nginx_module/ContentHandler.c +1 -1
  504. data/src/nginx_module/ContentHandler.h +1 -1
  505. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +1 -1
  506. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  507. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +1 -1
  508. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +1 -1
  509. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +1 -1
  510. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  511. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +1 -1
  512. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +1 -1
  513. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +1 -1
  514. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  515. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +1 -1
  516. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  517. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +1 -1
  518. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  519. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +1 -1
  520. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  521. data/src/nginx_module/StaticContentHandler.c +1 -1
  522. data/src/nginx_module/StaticContentHandler.h +1 -1
  523. data/src/nginx_module/ngx_http_passenger_module.c +1 -1
  524. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  525. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +1 -1
  526. data/src/ruby_native_extension/extconf.rb +1 -1
  527. data/src/ruby_native_extension/passenger_native_support.c +1 -1
  528. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +1 -1
  529. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +1 -1
  530. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +1 -1
  531. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -12
  532. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
  533. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -1
  534. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +1 -1
  535. data/src/ruby_supportlib/phusion_passenger/common_library.rb +8 -10
  536. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +1 -1
  537. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +1 -1
  538. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +1 -1
  539. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +1 -1
  540. data/src/ruby_supportlib/phusion_passenger/config/command.rb +1 -1
  541. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +1 -1
  542. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +1 -1
  543. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +1 -1
  544. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
  545. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
  546. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +1 -1
  547. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +1 -1
  548. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  549. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +1 -1
  550. data/src/ruby_supportlib/phusion_passenger/config/main.rb +1 -1
  551. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +3 -2
  552. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +6 -1
  553. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +1 -1
  554. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +1 -1
  555. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +1 -1
  556. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +1 -1
  557. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +1 -1
  558. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +1 -1
  559. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
  560. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +1 -1
  561. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +1 -1
  562. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +1 -1
  563. data/src/ruby_supportlib/phusion_passenger/message_client.rb +1 -1
  564. data/src/ruby_supportlib/phusion_passenger/native_support.rb +1 -1
  565. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +1 -1
  566. data/src/ruby_supportlib/phusion_passenger/packaging.rb +4 -3
  567. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -1
  568. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +1 -1
  569. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +1 -1
  570. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +195 -11
  571. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +1 -1
  572. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +1 -1
  573. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +1 -1
  574. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +1 -1
  575. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +1 -1
  576. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +1 -1
  577. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
  578. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +1 -1
  579. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +1 -1
  580. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +1 -1
  581. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +1 -1
  582. data/src/ruby_supportlib/phusion_passenger/plugin.rb +1 -1
  583. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +1 -1
  584. data/src/ruby_supportlib/phusion_passenger/public_api.rb +1 -1
  585. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +1 -1
  586. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +1 -1
  587. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +1 -1
  588. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +1 -1
  589. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -7
  590. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +1 -1
  591. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +1 -1
  592. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +1 -1
  593. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +1 -1
  594. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +1 -1
  595. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +1 -1
  596. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +1 -1
  597. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +1 -1
  598. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +1 -1
  599. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +1 -1
  600. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +2 -2
  601. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +4 -8
  602. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
  603. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +1 -1
  604. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +1 -1
  605. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +1 -1
  606. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +1 -1
  607. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +1 -1
  608. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +1 -1
  609. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +1 -1
  610. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +1 -1
  611. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +1 -1
  612. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
  613. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +1 -1
  614. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  615. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +3 -13
  616. data/src/ruby_supportlib/phusion_passenger/utils.rb +1 -1
  617. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
  618. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
  619. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  620. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +1 -1
  621. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
  622. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
  623. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +8 -6
  624. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +4 -3
  625. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +6 -4
  626. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +395 -579
  627. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  628. data/src/schema_printer/SchemaPrinterMain.cpp +1 -1
  629. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +1 -1
  630. metadata +69 -32
  631. data/doc/DeveloperQuickstart.md +0 -70
  632. data/src/README.md +0 -7
  633. data/src/cxx_supportlib/vendor-copy/libuv/README.md +0 -245
  634. data/src/cxx_supportlib/vendor-copy/libuv/checksparse.sh +0 -234
  635. data/src/cxx_supportlib/vendor-copy/libuv/common.gypi +0 -210
  636. data/src/cxx_supportlib/vendor-copy/libuv/gyp_uv.py +0 -93
  637. data/src/cxx_supportlib/vendor-copy/libuv/include/android-ifaddrs.h +0 -54
  638. data/src/cxx_supportlib/vendor-copy/libuv/include/pthread-fixes.h +0 -72
  639. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/android-ifaddrs.c +0 -703
  640. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/atomic-ops.h +0 -77
  641. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-core.c +0 -899
  642. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-inotify.c +0 -285
  643. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.c +0 -471
  644. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.h +0 -158
  645. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pthread-fixes.c +0 -104
  646. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/spinlock.h +0 -53
  647. data/src/cxx_supportlib/vendor-copy/libuv/uv.gyp +0 -508
  648. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-aix.h → uv/aix.h} +0 -0
  649. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-bsd.h → uv/bsd.h} +0 -0
  650. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-sunos.h → uv/sunos.h} +0 -0
@@ -27,6 +27,11 @@
27
27
  extern "C" {
28
28
  #endif
29
29
 
30
+ #if defined(BUILDING_UV_SHARED) && defined(USING_UV_SHARED)
31
+ #error "Define either BUILDING_UV_SHARED or USING_UV_SHARED, not both."
32
+ #endif
33
+
34
+ #ifndef UV_EXTERN
30
35
  #ifdef _WIN32
31
36
  /* Windows - set up dll import/export decorators. */
32
37
  # if defined(BUILDING_UV_SHARED)
@@ -41,25 +46,29 @@ extern "C" {
41
46
  # endif
42
47
  #elif __GNUC__ >= 4
43
48
  # define UV_EXTERN __attribute__((visibility("default")))
49
+ #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) /* Sun Studio >= 8 */
50
+ # define UV_EXTERN __global
44
51
  #else
45
52
  # define UV_EXTERN /* nothing */
46
53
  #endif
54
+ #endif /* UV_EXTERN */
47
55
 
48
- #include "uv-errno.h"
49
- #include "uv-version.h"
56
+ #include "uv/errno.h"
57
+ #include "uv/version.h"
50
58
  #include <stddef.h>
51
59
  #include <stdio.h>
60
+ #include <stdint.h>
52
61
 
53
- #if defined(_MSC_VER) && _MSC_VER < 1600
54
- # include "stdint-msvc2008.h"
55
- #else
56
- # include <stdint.h>
57
- #endif
62
+ /* Internal type, do not use. */
63
+ struct uv__queue {
64
+ struct uv__queue* next;
65
+ struct uv__queue* prev;
66
+ };
58
67
 
59
68
  #if defined(_WIN32)
60
- # include "uv-win.h"
69
+ # include "uv/win.h"
61
70
  #else
62
- # include "uv-unix.h"
71
+ # include "uv/unix.h"
63
72
  #endif
64
73
 
65
74
  /* Expand this list if necessary. */
@@ -122,6 +131,7 @@ extern "C" {
122
131
  XX(ENOTEMPTY, "directory not empty") \
123
132
  XX(ENOTSOCK, "socket operation on non-socket") \
124
133
  XX(ENOTSUP, "operation not supported on socket") \
134
+ XX(EOVERFLOW, "value too large for defined data type") \
125
135
  XX(EPERM, "operation not permitted") \
126
136
  XX(EPIPE, "broken pipe") \
127
137
  XX(EPROTO, "protocol error") \
@@ -140,6 +150,13 @@ extern "C" {
140
150
  XX(ENXIO, "no such device or address") \
141
151
  XX(EMLINK, "too many links") \
142
152
  XX(EHOSTDOWN, "host is down") \
153
+ XX(EREMOTEIO, "remote I/O error") \
154
+ XX(ENOTTY, "inappropriate ioctl for device") \
155
+ XX(EFTYPE, "inappropriate file type or format") \
156
+ XX(EILSEQ, "illegal byte sequence") \
157
+ XX(ESOCKTNOSUPPORT, "socket type not supported") \
158
+ XX(ENODATA, "no data available") \
159
+ XX(EUNATCH, "protocol driver not attached") \
143
160
 
144
161
  #define UV_HANDLE_TYPE_MAP(XX) \
145
162
  XX(ASYNC, async) \
@@ -169,6 +186,7 @@ extern "C" {
169
186
  XX(WORK, work) \
170
187
  XX(GETADDRINFO, getaddrinfo) \
171
188
  XX(GETNAMEINFO, getnameinfo) \
189
+ XX(RANDOM, random) \
172
190
 
173
191
  typedef enum {
174
192
  #define XX(code, _) UV_ ## code = UV__ ## code,
@@ -199,6 +217,7 @@ typedef enum {
199
217
  /* Handle types. */
200
218
  typedef struct uv_loop_s uv_loop_t;
201
219
  typedef struct uv_handle_s uv_handle_t;
220
+ typedef struct uv_dir_s uv_dir_t;
202
221
  typedef struct uv_stream_s uv_stream_t;
203
222
  typedef struct uv_tcp_s uv_tcp_t;
204
223
  typedef struct uv_udp_s uv_udp_t;
@@ -225,14 +244,25 @@ typedef struct uv_connect_s uv_connect_t;
225
244
  typedef struct uv_udp_send_s uv_udp_send_t;
226
245
  typedef struct uv_fs_s uv_fs_t;
227
246
  typedef struct uv_work_s uv_work_t;
247
+ typedef struct uv_random_s uv_random_t;
228
248
 
229
249
  /* None of the above. */
250
+ typedef struct uv_env_item_s uv_env_item_t;
230
251
  typedef struct uv_cpu_info_s uv_cpu_info_t;
231
252
  typedef struct uv_interface_address_s uv_interface_address_t;
232
253
  typedef struct uv_dirent_s uv_dirent_t;
254
+ typedef struct uv_passwd_s uv_passwd_t;
255
+ typedef struct uv_group_s uv_group_t;
256
+ typedef struct uv_utsname_s uv_utsname_t;
257
+ typedef struct uv_statfs_s uv_statfs_t;
258
+
259
+ typedef struct uv_metrics_s uv_metrics_t;
233
260
 
234
261
  typedef enum {
235
- UV_LOOP_BLOCK_SIGNAL
262
+ UV_LOOP_BLOCK_SIGNAL = 0,
263
+ UV_METRICS_IDLE_TIME,
264
+ UV_LOOP_USE_IO_URING_SQPOLL
265
+ #define UV_LOOP_USE_IO_URING_SQPOLL UV_LOOP_USE_IO_URING_SQPOLL
236
266
  } uv_loop_option;
237
267
 
238
268
  typedef enum {
@@ -250,6 +280,8 @@ typedef void* (*uv_realloc_func)(void* ptr, size_t size);
250
280
  typedef void* (*uv_calloc_func)(size_t count, size_t size);
251
281
  typedef void (*uv_free_func)(void* ptr);
252
282
 
283
+ UV_EXTERN void uv_library_shutdown(void);
284
+
253
285
  UV_EXTERN int uv_replace_allocator(uv_malloc_func malloc_func,
254
286
  uv_realloc_func realloc_func,
255
287
  uv_calloc_func calloc_func,
@@ -260,19 +292,20 @@ UV_EXTERN int uv_loop_init(uv_loop_t* loop);
260
292
  UV_EXTERN int uv_loop_close(uv_loop_t* loop);
261
293
  /*
262
294
  * NOTE:
263
- * This function is DEPRECATED (to be removed after 0.12), users should
295
+ * This function is DEPRECATED, users should
264
296
  * allocate the loop manually and use uv_loop_init instead.
265
297
  */
266
298
  UV_EXTERN uv_loop_t* uv_loop_new(void);
267
299
  /*
268
300
  * NOTE:
269
- * This function is DEPRECATED (to be removed after 0.12). Users should use
301
+ * This function is DEPRECATED. Users should use
270
302
  * uv_loop_close and free the memory manually instead.
271
303
  */
272
304
  UV_EXTERN void uv_loop_delete(uv_loop_t*);
273
305
  UV_EXTERN size_t uv_loop_size(void);
274
306
  UV_EXTERN int uv_loop_alive(const uv_loop_t* loop);
275
307
  UV_EXTERN int uv_loop_configure(uv_loop_t* loop, uv_loop_option option, ...);
308
+ UV_EXTERN int uv_loop_fork(uv_loop_t* loop);
276
309
 
277
310
  UV_EXTERN int uv_run(uv_loop_t*, uv_run_mode mode);
278
311
  UV_EXTERN void uv_stop(uv_loop_t*);
@@ -316,12 +349,37 @@ typedef void (*uv_getnameinfo_cb)(uv_getnameinfo_t* req,
316
349
  int status,
317
350
  const char* hostname,
318
351
  const char* service);
352
+ typedef void (*uv_random_cb)(uv_random_t* req,
353
+ int status,
354
+ void* buf,
355
+ size_t buflen);
319
356
 
357
+ typedef enum {
358
+ UV_CLOCK_MONOTONIC,
359
+ UV_CLOCK_REALTIME
360
+ } uv_clock_id;
361
+
362
+ /* XXX(bnoordhuis) not 2038-proof, https://github.com/libuv/libuv/issues/3864 */
320
363
  typedef struct {
321
364
  long tv_sec;
322
365
  long tv_nsec;
323
366
  } uv_timespec_t;
324
367
 
368
+ typedef struct {
369
+ int64_t tv_sec;
370
+ int32_t tv_nsec;
371
+ } uv_timespec64_t;
372
+
373
+ /* XXX(bnoordhuis) not 2038-proof, https://github.com/libuv/libuv/issues/3864 */
374
+ typedef struct {
375
+ long tv_sec;
376
+ long tv_usec;
377
+ } uv_timeval_t;
378
+
379
+ typedef struct {
380
+ int64_t tv_sec;
381
+ int32_t tv_usec;
382
+ } uv_timeval64_t;
325
383
 
326
384
  typedef struct {
327
385
  uint64_t st_dev;
@@ -362,8 +420,13 @@ typedef enum {
362
420
  } uv_membership;
363
421
 
364
422
 
423
+ UV_EXTERN int uv_translate_sys_error(int sys_errno);
424
+
365
425
  UV_EXTERN const char* uv_strerror(int err);
426
+ UV_EXTERN char* uv_strerror_r(int err, char* buf, size_t buflen);
427
+
366
428
  UV_EXTERN const char* uv_err_name(int err);
429
+ UV_EXTERN char* uv_err_name_r(int err, char* buf, size_t buflen);
367
430
 
368
431
 
369
432
  #define UV_REQ_FIELDS \
@@ -372,8 +435,7 @@ UV_EXTERN const char* uv_err_name(int err);
372
435
  /* read-only */ \
373
436
  uv_req_type type; \
374
437
  /* private */ \
375
- void* active_queue[2]; \
376
- void* reserved[4]; \
438
+ void* reserved[6]; \
377
439
  UV_REQ_PRIVATE_FIELDS \
378
440
 
379
441
  /* Abstract base class of all requests. */
@@ -406,7 +468,7 @@ struct uv_shutdown_s {
406
468
  uv_handle_type type; \
407
469
  /* private */ \
408
470
  uv_close_cb close_cb; \
409
- void* handle_queue[2]; \
471
+ struct uv__queue handle_queue; \
410
472
  union { \
411
473
  int fd; \
412
474
  void* reserved[4]; \
@@ -419,7 +481,17 @@ struct uv_handle_s {
419
481
  };
420
482
 
421
483
  UV_EXTERN size_t uv_handle_size(uv_handle_type type);
484
+ UV_EXTERN uv_handle_type uv_handle_get_type(const uv_handle_t* handle);
485
+ UV_EXTERN const char* uv_handle_type_name(uv_handle_type type);
486
+ UV_EXTERN void* uv_handle_get_data(const uv_handle_t* handle);
487
+ UV_EXTERN uv_loop_t* uv_handle_get_loop(const uv_handle_t* handle);
488
+ UV_EXTERN void uv_handle_set_data(uv_handle_t* handle, void* data);
489
+
422
490
  UV_EXTERN size_t uv_req_size(uv_req_type type);
491
+ UV_EXTERN void* uv_req_get_data(const uv_req_t* req);
492
+ UV_EXTERN void uv_req_set_data(uv_req_t* req, void* data);
493
+ UV_EXTERN uv_req_type uv_req_get_type(const uv_req_t* req);
494
+ UV_EXTERN const char* uv_req_type_name(uv_req_type type);
423
495
 
424
496
  UV_EXTERN int uv_is_active(const uv_handle_t* handle);
425
497
 
@@ -438,6 +510,12 @@ UV_EXTERN int uv_fileno(const uv_handle_t* handle, uv_os_fd_t* fd);
438
510
 
439
511
  UV_EXTERN uv_buf_t uv_buf_init(char* base, unsigned int len);
440
512
 
513
+ UV_EXTERN int uv_pipe(uv_file fds[2], int read_flags, int write_flags);
514
+ UV_EXTERN int uv_socketpair(int type,
515
+ int protocol,
516
+ uv_os_sock_t socket_vector[2],
517
+ int flags0,
518
+ int flags1);
441
519
 
442
520
  #define UV_STREAM_FIELDS \
443
521
  /* number of bytes queued for writing */ \
@@ -459,6 +537,8 @@ struct uv_stream_s {
459
537
  UV_STREAM_FIELDS
460
538
  };
461
539
 
540
+ UV_EXTERN size_t uv_stream_get_write_queue_size(const uv_stream_t* stream);
541
+
462
542
  UV_EXTERN int uv_listen(uv_stream_t* stream, int backlog, uv_connection_cb cb);
463
543
  UV_EXTERN int uv_accept(uv_stream_t* server, uv_stream_t* client);
464
544
 
@@ -481,12 +561,16 @@ UV_EXTERN int uv_write2(uv_write_t* req,
481
561
  UV_EXTERN int uv_try_write(uv_stream_t* handle,
482
562
  const uv_buf_t bufs[],
483
563
  unsigned int nbufs);
564
+ UV_EXTERN int uv_try_write2(uv_stream_t* handle,
565
+ const uv_buf_t bufs[],
566
+ unsigned int nbufs,
567
+ uv_stream_t* send_handle);
484
568
 
485
569
  /* uv_write_t is a subclass of uv_req_t. */
486
570
  struct uv_write_s {
487
571
  UV_REQ_FIELDS
488
572
  uv_write_cb cb;
489
- uv_stream_t* send_handle;
573
+ uv_stream_t* send_handle; /* TODO: make private and unix-only in v2.x. */
490
574
  uv_stream_t* handle;
491
575
  UV_WRITE_PRIVATE_FIELDS
492
576
  };
@@ -522,7 +606,18 @@ UV_EXTERN int uv_tcp_simultaneous_accepts(uv_tcp_t* handle, int enable);
522
606
 
523
607
  enum uv_tcp_flags {
524
608
  /* Used with uv_tcp_bind, when an IPv6 address is used. */
525
- UV_TCP_IPV6ONLY = 1
609
+ UV_TCP_IPV6ONLY = 1,
610
+
611
+ /* Enable SO_REUSEPORT socket option when binding the handle.
612
+ * This allows completely duplicate bindings by multiple processes
613
+ * or threads if they all set SO_REUSEPORT before binding the port.
614
+ * Incoming connections are distributed across the participating
615
+ * listener sockets.
616
+ *
617
+ * This flag is available only on Linux 3.9+, DragonFlyBSD 3.6+,
618
+ * FreeBSD 12.0+, Solaris 11.4, and AIX 7.2.5+ for now.
619
+ */
620
+ UV_TCP_REUSEPORT = 2,
526
621
  };
527
622
 
528
623
  UV_EXTERN int uv_tcp_bind(uv_tcp_t* handle,
@@ -534,6 +629,7 @@ UV_EXTERN int uv_tcp_getsockname(const uv_tcp_t* handle,
534
629
  UV_EXTERN int uv_tcp_getpeername(const uv_tcp_t* handle,
535
630
  struct sockaddr* name,
536
631
  int* namelen);
632
+ UV_EXTERN int uv_tcp_close_reset(uv_tcp_t* handle, uv_close_cb close_cb);
537
633
  UV_EXTERN int uv_tcp_connect(uv_connect_t* req,
538
634
  uv_tcp_t* handle,
539
635
  const struct sockaddr* addr,
@@ -562,13 +658,51 @@ enum uv_udp_flags {
562
658
  UV_UDP_PARTIAL = 2,
563
659
  /*
564
660
  * Indicates if SO_REUSEADDR will be set when binding the handle.
565
- * This sets the SO_REUSEPORT socket flag on the BSDs and OS X. On other
566
- * Unix platforms, it sets the SO_REUSEADDR flag. What that means is that
567
- * multiple threads or processes can bind to the same address without error
568
- * (provided they all set the flag) but only the last one to bind will receive
661
+ * This sets the SO_REUSEPORT socket flag on the BSDs (except for
662
+ * DragonFlyBSD), OS X, and other platforms where SO_REUSEPORTs don't
663
+ * have the capability of load balancing, as the opposite of what
664
+ * UV_UDP_REUSEPORT would do. On other Unix platforms, it sets the
665
+ * SO_REUSEADDR flag. What that means is that multiple threads or
666
+ * processes can bind to the same address without error (provided
667
+ * they all set the flag) but only the last one to bind will receive
569
668
  * any traffic, in effect "stealing" the port from the previous listener.
570
669
  */
571
- UV_UDP_REUSEADDR = 4
670
+ UV_UDP_REUSEADDR = 4,
671
+ /*
672
+ * Indicates that the message was received by recvmmsg, so the buffer provided
673
+ * must not be freed by the recv_cb callback.
674
+ */
675
+ UV_UDP_MMSG_CHUNK = 8,
676
+ /*
677
+ * Indicates that the buffer provided has been fully utilized by recvmmsg and
678
+ * that it should now be freed by the recv_cb callback. When this flag is set
679
+ * in uv_udp_recv_cb, nread will always be 0 and addr will always be NULL.
680
+ */
681
+ UV_UDP_MMSG_FREE = 16,
682
+ /*
683
+ * Indicates if IP_RECVERR/IPV6_RECVERR will be set when binding the handle.
684
+ * This sets IP_RECVERR for IPv4 and IPV6_RECVERR for IPv6 UDP sockets on
685
+ * Linux. This stops the Linux kernel from suppressing some ICMP error
686
+ * messages and enables full ICMP error reporting for faster failover.
687
+ * This flag is no-op on platforms other than Linux.
688
+ */
689
+ UV_UDP_LINUX_RECVERR = 32,
690
+ /*
691
+ * Indicates if SO_REUSEPORT will be set when binding the handle.
692
+ * This sets the SO_REUSEPORT socket option on supported platforms.
693
+ * Unlike UV_UDP_REUSEADDR, this flag will make multiple threads or
694
+ * processes that are binding to the same address and port "share"
695
+ * the port, which means incoming datagrams are distributed across
696
+ * the receiving sockets among threads or processes.
697
+ *
698
+ * This flag is available only on Linux 3.9+, DragonFlyBSD 3.6+,
699
+ * FreeBSD 12.0+, Solaris 11.4, and AIX 7.2.5+ for now.
700
+ */
701
+ UV_UDP_REUSEPORT = 64,
702
+ /*
703
+ * Indicates that recvmmsg should be used, if available.
704
+ */
705
+ UV_UDP_RECVMMSG = 256
572
706
  };
573
707
 
574
708
  typedef void (*uv_udp_send_cb)(uv_udp_send_t* req, int status);
@@ -608,7 +742,11 @@ UV_EXTERN int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock);
608
742
  UV_EXTERN int uv_udp_bind(uv_udp_t* handle,
609
743
  const struct sockaddr* addr,
610
744
  unsigned int flags);
745
+ UV_EXTERN int uv_udp_connect(uv_udp_t* handle, const struct sockaddr* addr);
611
746
 
747
+ UV_EXTERN int uv_udp_getpeername(const uv_udp_t* handle,
748
+ struct sockaddr* name,
749
+ int* namelen);
612
750
  UV_EXTERN int uv_udp_getsockname(const uv_udp_t* handle,
613
751
  struct sockaddr* name,
614
752
  int* namelen);
@@ -616,6 +754,11 @@ UV_EXTERN int uv_udp_set_membership(uv_udp_t* handle,
616
754
  const char* multicast_addr,
617
755
  const char* interface_addr,
618
756
  uv_membership membership);
757
+ UV_EXTERN int uv_udp_set_source_membership(uv_udp_t* handle,
758
+ const char* multicast_addr,
759
+ const char* interface_addr,
760
+ const char* source_addr,
761
+ uv_membership membership);
619
762
  UV_EXTERN int uv_udp_set_multicast_loop(uv_udp_t* handle, int on);
620
763
  UV_EXTERN int uv_udp_set_multicast_ttl(uv_udp_t* handle, int ttl);
621
764
  UV_EXTERN int uv_udp_set_multicast_interface(uv_udp_t* handle,
@@ -635,7 +778,10 @@ UV_EXTERN int uv_udp_try_send(uv_udp_t* handle,
635
778
  UV_EXTERN int uv_udp_recv_start(uv_udp_t* handle,
636
779
  uv_alloc_cb alloc_cb,
637
780
  uv_udp_recv_cb recv_cb);
781
+ UV_EXTERN int uv_udp_using_recvmmsg(const uv_udp_t* handle);
638
782
  UV_EXTERN int uv_udp_recv_stop(uv_udp_t* handle);
783
+ UV_EXTERN size_t uv_udp_get_send_queue_size(const uv_udp_t* handle);
784
+ UV_EXTERN size_t uv_udp_get_send_queue_count(const uv_udp_t* handle);
639
785
 
640
786
 
641
787
  /*
@@ -658,10 +804,25 @@ typedef enum {
658
804
  UV_TTY_MODE_IO
659
805
  } uv_tty_mode_t;
660
806
 
807
+ typedef enum {
808
+ /*
809
+ * The console supports handling of virtual terminal sequences
810
+ * (Windows10 new console, ConEmu)
811
+ */
812
+ UV_TTY_SUPPORTED,
813
+ /* The console cannot process the virtual terminal sequence. (Legacy
814
+ * console)
815
+ */
816
+ UV_TTY_UNSUPPORTED
817
+ } uv_tty_vtermstate_t;
818
+
819
+
661
820
  UV_EXTERN int uv_tty_init(uv_loop_t*, uv_tty_t*, uv_file fd, int readable);
662
821
  UV_EXTERN int uv_tty_set_mode(uv_tty_t*, uv_tty_mode_t mode);
663
822
  UV_EXTERN int uv_tty_reset_mode(void);
664
823
  UV_EXTERN int uv_tty_get_winsize(uv_tty_t*, int* width, int* height);
824
+ UV_EXTERN void uv_tty_set_vterm_state(uv_tty_vtermstate_t state);
825
+ UV_EXTERN int uv_tty_get_vterm_state(uv_tty_vtermstate_t* state);
665
826
 
666
827
  #ifdef __cplusplus
667
828
  extern "C++" {
@@ -675,6 +836,10 @@ inline int uv_tty_set_mode(uv_tty_t* handle, int mode) {
675
836
 
676
837
  UV_EXTERN uv_handle_type uv_guess_handle(uv_file file);
677
838
 
839
+ enum {
840
+ UV_PIPE_NO_TRUNCATE = 1u << 0
841
+ };
842
+
678
843
  /*
679
844
  * uv_pipe_t is a subclass of uv_stream_t.
680
845
  *
@@ -691,10 +856,20 @@ struct uv_pipe_s {
691
856
  UV_EXTERN int uv_pipe_init(uv_loop_t*, uv_pipe_t* handle, int ipc);
692
857
  UV_EXTERN int uv_pipe_open(uv_pipe_t*, uv_file file);
693
858
  UV_EXTERN int uv_pipe_bind(uv_pipe_t* handle, const char* name);
859
+ UV_EXTERN int uv_pipe_bind2(uv_pipe_t* handle,
860
+ const char* name,
861
+ size_t namelen,
862
+ unsigned int flags);
694
863
  UV_EXTERN void uv_pipe_connect(uv_connect_t* req,
695
864
  uv_pipe_t* handle,
696
865
  const char* name,
697
866
  uv_connect_cb cb);
867
+ UV_EXTERN int uv_pipe_connect2(uv_connect_t* req,
868
+ uv_pipe_t* handle,
869
+ const char* name,
870
+ size_t namelen,
871
+ unsigned int flags,
872
+ uv_connect_cb cb);
698
873
  UV_EXTERN int uv_pipe_getsockname(const uv_pipe_t* handle,
699
874
  char* buffer,
700
875
  size_t* size);
@@ -704,6 +879,7 @@ UV_EXTERN int uv_pipe_getpeername(const uv_pipe_t* handle,
704
879
  UV_EXTERN void uv_pipe_pending_instances(uv_pipe_t* handle, int count);
705
880
  UV_EXTERN int uv_pipe_pending_count(uv_pipe_t* handle);
706
881
  UV_EXTERN uv_handle_type uv_pipe_pending_type(uv_pipe_t* handle);
882
+ UV_EXTERN int uv_pipe_chmod(uv_pipe_t* handle, int flags);
707
883
 
708
884
 
709
885
  struct uv_poll_s {
@@ -714,7 +890,9 @@ struct uv_poll_s {
714
890
 
715
891
  enum uv_poll_event {
716
892
  UV_READABLE = 1,
717
- UV_WRITABLE = 2
893
+ UV_WRITABLE = 2,
894
+ UV_DISCONNECT = 4,
895
+ UV_PRIORITIZED = 8
718
896
  };
719
897
 
720
898
  UV_EXTERN int uv_poll_init(uv_loop_t* loop, uv_poll_t* handle, int fd);
@@ -785,6 +963,7 @@ UV_EXTERN int uv_timer_stop(uv_timer_t* handle);
785
963
  UV_EXTERN int uv_timer_again(uv_timer_t* handle);
786
964
  UV_EXTERN void uv_timer_set_repeat(uv_timer_t* handle, uint64_t repeat);
787
965
  UV_EXTERN uint64_t uv_timer_get_repeat(const uv_timer_t* handle);
966
+ UV_EXTERN uint64_t uv_timer_get_due_in(const uv_timer_t* handle);
788
967
 
789
968
 
790
969
  /*
@@ -843,7 +1022,16 @@ typedef enum {
843
1022
  * flags may be specified to create a duplex data stream.
844
1023
  */
845
1024
  UV_READABLE_PIPE = 0x10,
846
- UV_WRITABLE_PIPE = 0x20
1025
+ UV_WRITABLE_PIPE = 0x20,
1026
+
1027
+ /*
1028
+ * When UV_CREATE_PIPE is specified, specifying UV_NONBLOCK_PIPE opens the
1029
+ * handle in non-blocking mode in the child. This may cause loss of data,
1030
+ * if the child is not designed to handle to encounter this mode,
1031
+ * but can also be significantly more efficient.
1032
+ */
1033
+ UV_NONBLOCK_PIPE = 0x40,
1034
+ UV_OVERLAPPED_PIPE = 0x40 /* old name, for compatibility */
847
1035
  } uv_stdio_flags;
848
1036
 
849
1037
  typedef struct uv_stdio_container_s {
@@ -930,12 +1118,30 @@ enum uv_process_flags {
930
1118
  * the child's process handle.
931
1119
  */
932
1120
  UV_PROCESS_DETACHED = (1 << 3),
1121
+ /*
1122
+ * Hide the subprocess window that would normally be created. This option is
1123
+ * only meaningful on Windows systems. On Unix it is silently ignored.
1124
+ */
1125
+ UV_PROCESS_WINDOWS_HIDE = (1 << 4),
933
1126
  /*
934
1127
  * Hide the subprocess console window that would normally be created. This
935
1128
  * option is only meaningful on Windows systems. On Unix it is silently
936
1129
  * ignored.
937
1130
  */
938
- UV_PROCESS_WINDOWS_HIDE = (1 << 4)
1131
+ UV_PROCESS_WINDOWS_HIDE_CONSOLE = (1 << 5),
1132
+ /*
1133
+ * Hide the subprocess GUI window that would normally be created. This
1134
+ * option is only meaningful on Windows systems. On Unix it is silently
1135
+ * ignored.
1136
+ */
1137
+ UV_PROCESS_WINDOWS_HIDE_GUI = (1 << 6),
1138
+ /*
1139
+ * On Windows, if the path to the program to execute, specified in
1140
+ * uv_process_options_t's file field, has a directory component,
1141
+ * search for the exact file name before trying variants with
1142
+ * extensions like '.exe' or '.cmd'.
1143
+ */
1144
+ UV_PROCESS_WINDOWS_FILE_PATH_EXACT_NAME = (1 << 7)
939
1145
  };
940
1146
 
941
1147
  /*
@@ -953,6 +1159,7 @@ UV_EXTERN int uv_spawn(uv_loop_t* loop,
953
1159
  const uv_process_options_t* options);
954
1160
  UV_EXTERN int uv_process_kill(uv_process_t*, int signum);
955
1161
  UV_EXTERN int uv_kill(int pid, int signum);
1162
+ UV_EXTERN uv_pid_t uv_process_get_pid(const uv_process_t*);
956
1163
 
957
1164
 
958
1165
  /*
@@ -974,16 +1181,18 @@ UV_EXTERN int uv_queue_work(uv_loop_t* loop,
974
1181
  UV_EXTERN int uv_cancel(uv_req_t* req);
975
1182
 
976
1183
 
1184
+ struct uv_cpu_times_s {
1185
+ uint64_t user; /* milliseconds */
1186
+ uint64_t nice; /* milliseconds */
1187
+ uint64_t sys; /* milliseconds */
1188
+ uint64_t idle; /* milliseconds */
1189
+ uint64_t irq; /* milliseconds */
1190
+ };
1191
+
977
1192
  struct uv_cpu_info_s {
978
1193
  char* model;
979
1194
  int speed;
980
- struct uv_cpu_times_s {
981
- uint64_t user;
982
- uint64_t nice;
983
- uint64_t sys;
984
- uint64_t idle;
985
- uint64_t irq;
986
- } cpu_times;
1195
+ struct uv_cpu_times_s cpu_times;
987
1196
  };
988
1197
 
989
1198
  struct uv_interface_address_s {
@@ -1000,6 +1209,41 @@ struct uv_interface_address_s {
1000
1209
  } netmask;
1001
1210
  };
1002
1211
 
1212
+ struct uv_passwd_s {
1213
+ char* username;
1214
+ unsigned long uid;
1215
+ unsigned long gid;
1216
+ char* shell;
1217
+ char* homedir;
1218
+ };
1219
+
1220
+ struct uv_group_s {
1221
+ char* groupname;
1222
+ unsigned long gid;
1223
+ char** members;
1224
+ };
1225
+
1226
+ struct uv_utsname_s {
1227
+ char sysname[256];
1228
+ char release[256];
1229
+ char version[256];
1230
+ char machine[256];
1231
+ /* This struct does not contain the nodename and domainname fields present in
1232
+ the utsname type. domainname is a GNU extension. Both fields are referred
1233
+ to as meaningless in the docs. */
1234
+ };
1235
+
1236
+ struct uv_statfs_s {
1237
+ uint64_t f_type;
1238
+ uint64_t f_bsize;
1239
+ uint64_t f_blocks;
1240
+ uint64_t f_bfree;
1241
+ uint64_t f_bavail;
1242
+ uint64_t f_files;
1243
+ uint64_t f_ffree;
1244
+ uint64_t f_spare[4];
1245
+ };
1246
+
1003
1247
  typedef enum {
1004
1248
  UV_DIRENT_UNKNOWN,
1005
1249
  UV_DIRENT_FILE,
@@ -1021,11 +1265,8 @@ UV_EXTERN int uv_get_process_title(char* buffer, size_t size);
1021
1265
  UV_EXTERN int uv_set_process_title(const char* title);
1022
1266
  UV_EXTERN int uv_resident_set_memory(size_t* rss);
1023
1267
  UV_EXTERN int uv_uptime(double* uptime);
1024
-
1025
- typedef struct {
1026
- long tv_sec;
1027
- long tv_usec;
1028
- } uv_timeval_t;
1268
+ UV_EXTERN uv_os_fd_t uv_get_osfhandle(int fd);
1269
+ UV_EXTERN int uv_open_osfhandle(uv_os_fd_t os_fd);
1029
1270
 
1030
1271
  typedef struct {
1031
1272
  uv_timeval_t ru_utime; /* user CPU time used */
@@ -1049,15 +1290,92 @@ typedef struct {
1049
1290
  UV_EXTERN int uv_getrusage(uv_rusage_t* rusage);
1050
1291
 
1051
1292
  UV_EXTERN int uv_os_homedir(char* buffer, size_t* size);
1293
+ UV_EXTERN int uv_os_tmpdir(char* buffer, size_t* size);
1294
+ UV_EXTERN int uv_os_get_passwd(uv_passwd_t* pwd);
1295
+ UV_EXTERN void uv_os_free_passwd(uv_passwd_t* pwd);
1296
+ UV_EXTERN int uv_os_get_passwd2(uv_passwd_t* pwd, uv_uid_t uid);
1297
+ UV_EXTERN int uv_os_get_group(uv_group_t* grp, uv_uid_t gid);
1298
+ UV_EXTERN void uv_os_free_group(uv_group_t* grp);
1299
+ UV_EXTERN uv_pid_t uv_os_getpid(void);
1300
+ UV_EXTERN uv_pid_t uv_os_getppid(void);
1301
+
1302
+ #if defined(__PASE__)
1303
+ /* On IBM i PASE, the highest process priority is -10 */
1304
+ # define UV_PRIORITY_LOW 39 /* RUNPTY(99) */
1305
+ # define UV_PRIORITY_BELOW_NORMAL 15 /* RUNPTY(50) */
1306
+ # define UV_PRIORITY_NORMAL 0 /* RUNPTY(20) */
1307
+ # define UV_PRIORITY_ABOVE_NORMAL -4 /* RUNTY(12) */
1308
+ # define UV_PRIORITY_HIGH -7 /* RUNPTY(6) */
1309
+ # define UV_PRIORITY_HIGHEST -10 /* RUNPTY(1) */
1310
+ #else
1311
+ # define UV_PRIORITY_LOW 19
1312
+ # define UV_PRIORITY_BELOW_NORMAL 10
1313
+ # define UV_PRIORITY_NORMAL 0
1314
+ # define UV_PRIORITY_ABOVE_NORMAL -7
1315
+ # define UV_PRIORITY_HIGH -14
1316
+ # define UV_PRIORITY_HIGHEST -20
1317
+ #endif
1318
+
1319
+ UV_EXTERN int uv_os_getpriority(uv_pid_t pid, int* priority);
1320
+ UV_EXTERN int uv_os_setpriority(uv_pid_t pid, int priority);
1321
+
1322
+ enum {
1323
+ UV_THREAD_PRIORITY_HIGHEST = 2,
1324
+ UV_THREAD_PRIORITY_ABOVE_NORMAL = 1,
1325
+ UV_THREAD_PRIORITY_NORMAL = 0,
1326
+ UV_THREAD_PRIORITY_BELOW_NORMAL = -1,
1327
+ UV_THREAD_PRIORITY_LOWEST = -2,
1328
+ };
1329
+
1330
+ UV_EXTERN int uv_thread_getpriority(uv_thread_t tid, int* priority);
1331
+ UV_EXTERN int uv_thread_setpriority(uv_thread_t tid, int priority);
1052
1332
 
1333
+ UV_EXTERN unsigned int uv_available_parallelism(void);
1053
1334
  UV_EXTERN int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count);
1054
1335
  UV_EXTERN void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count);
1336
+ UV_EXTERN int uv_cpumask_size(void);
1055
1337
 
1056
1338
  UV_EXTERN int uv_interface_addresses(uv_interface_address_t** addresses,
1057
1339
  int* count);
1058
1340
  UV_EXTERN void uv_free_interface_addresses(uv_interface_address_t* addresses,
1059
1341
  int count);
1060
1342
 
1343
+ struct uv_env_item_s {
1344
+ char* name;
1345
+ char* value;
1346
+ };
1347
+
1348
+ UV_EXTERN int uv_os_environ(uv_env_item_t** envitems, int* count);
1349
+ UV_EXTERN void uv_os_free_environ(uv_env_item_t* envitems, int count);
1350
+ UV_EXTERN int uv_os_getenv(const char* name, char* buffer, size_t* size);
1351
+ UV_EXTERN int uv_os_setenv(const char* name, const char* value);
1352
+ UV_EXTERN int uv_os_unsetenv(const char* name);
1353
+
1354
+ #ifdef MAXHOSTNAMELEN
1355
+ # define UV_MAXHOSTNAMESIZE (MAXHOSTNAMELEN + 1)
1356
+ #else
1357
+ /*
1358
+ Fallback for the maximum hostname size, including the null terminator. The
1359
+ Windows gethostname() documentation states that 256 bytes will always be
1360
+ large enough to hold the null-terminated hostname.
1361
+ */
1362
+ # define UV_MAXHOSTNAMESIZE 256
1363
+ #endif
1364
+
1365
+ UV_EXTERN int uv_os_gethostname(char* buffer, size_t* size);
1366
+
1367
+ UV_EXTERN int uv_os_uname(uv_utsname_t* buffer);
1368
+
1369
+ struct uv_metrics_s {
1370
+ uint64_t loop_count;
1371
+ uint64_t events;
1372
+ uint64_t events_waiting;
1373
+ /* private */
1374
+ uint64_t* reserved[13];
1375
+ };
1376
+
1377
+ UV_EXTERN int uv_metrics_info(uv_loop_t* loop, uv_metrics_t* metrics);
1378
+ UV_EXTERN uint64_t uv_metrics_idle_time(uv_loop_t* loop);
1061
1379
 
1062
1380
  typedef enum {
1063
1381
  UV_FS_UNKNOWN = -1,
@@ -1089,9 +1407,24 @@ typedef enum {
1089
1407
  UV_FS_READLINK,
1090
1408
  UV_FS_CHOWN,
1091
1409
  UV_FS_FCHOWN,
1092
- UV_FS_REALPATH
1410
+ UV_FS_REALPATH,
1411
+ UV_FS_COPYFILE,
1412
+ UV_FS_LCHOWN,
1413
+ UV_FS_OPENDIR,
1414
+ UV_FS_READDIR,
1415
+ UV_FS_CLOSEDIR,
1416
+ UV_FS_STATFS,
1417
+ UV_FS_MKSTEMP,
1418
+ UV_FS_LUTIME
1093
1419
  } uv_fs_type;
1094
1420
 
1421
+ struct uv_dir_s {
1422
+ uv_dirent_t* dirents;
1423
+ size_t nentries;
1424
+ void* reserved[4];
1425
+ UV_DIR_PRIVATE_FIELDS
1426
+ };
1427
+
1095
1428
  /* uv_fs_t is a subclass of uv_req_t. */
1096
1429
  struct uv_fs_s {
1097
1430
  UV_REQ_FIELDS
@@ -1105,6 +1438,13 @@ struct uv_fs_s {
1105
1438
  UV_FS_PRIVATE_FIELDS
1106
1439
  };
1107
1440
 
1441
+ UV_EXTERN uv_fs_type uv_fs_get_type(const uv_fs_t*);
1442
+ UV_EXTERN ssize_t uv_fs_get_result(const uv_fs_t*);
1443
+ UV_EXTERN int uv_fs_get_system_error(const uv_fs_t*);
1444
+ UV_EXTERN void* uv_fs_get_ptr(const uv_fs_t*);
1445
+ UV_EXTERN const char* uv_fs_get_path(const uv_fs_t*);
1446
+ UV_EXTERN uv_stat_t* uv_fs_get_statbuf(uv_fs_t*);
1447
+
1108
1448
  UV_EXTERN void uv_fs_req_cleanup(uv_fs_t* req);
1109
1449
  UV_EXTERN int uv_fs_close(uv_loop_t* loop,
1110
1450
  uv_fs_t* req,
@@ -1134,6 +1474,30 @@ UV_EXTERN int uv_fs_write(uv_loop_t* loop,
1134
1474
  unsigned int nbufs,
1135
1475
  int64_t offset,
1136
1476
  uv_fs_cb cb);
1477
+ /*
1478
+ * This flag can be used with uv_fs_copyfile() to return an error if the
1479
+ * destination already exists.
1480
+ */
1481
+ #define UV_FS_COPYFILE_EXCL 0x0001
1482
+
1483
+ /*
1484
+ * This flag can be used with uv_fs_copyfile() to attempt to create a reflink.
1485
+ * If copy-on-write is not supported, a fallback copy mechanism is used.
1486
+ */
1487
+ #define UV_FS_COPYFILE_FICLONE 0x0002
1488
+
1489
+ /*
1490
+ * This flag can be used with uv_fs_copyfile() to attempt to create a reflink.
1491
+ * If copy-on-write is not supported, an error is returned.
1492
+ */
1493
+ #define UV_FS_COPYFILE_FICLONE_FORCE 0x0004
1494
+
1495
+ UV_EXTERN int uv_fs_copyfile(uv_loop_t* loop,
1496
+ uv_fs_t* req,
1497
+ const char* path,
1498
+ const char* new_path,
1499
+ int flags,
1500
+ uv_fs_cb cb);
1137
1501
  UV_EXTERN int uv_fs_mkdir(uv_loop_t* loop,
1138
1502
  uv_fs_t* req,
1139
1503
  const char* path,
@@ -1143,6 +1507,10 @@ UV_EXTERN int uv_fs_mkdtemp(uv_loop_t* loop,
1143
1507
  uv_fs_t* req,
1144
1508
  const char* tpl,
1145
1509
  uv_fs_cb cb);
1510
+ UV_EXTERN int uv_fs_mkstemp(uv_loop_t* loop,
1511
+ uv_fs_t* req,
1512
+ const char* tpl,
1513
+ uv_fs_cb cb);
1146
1514
  UV_EXTERN int uv_fs_rmdir(uv_loop_t* loop,
1147
1515
  uv_fs_t* req,
1148
1516
  const char* path,
@@ -1154,6 +1522,18 @@ UV_EXTERN int uv_fs_scandir(uv_loop_t* loop,
1154
1522
  uv_fs_cb cb);
1155
1523
  UV_EXTERN int uv_fs_scandir_next(uv_fs_t* req,
1156
1524
  uv_dirent_t* ent);
1525
+ UV_EXTERN int uv_fs_opendir(uv_loop_t* loop,
1526
+ uv_fs_t* req,
1527
+ const char* path,
1528
+ uv_fs_cb cb);
1529
+ UV_EXTERN int uv_fs_readdir(uv_loop_t* loop,
1530
+ uv_fs_t* req,
1531
+ uv_dir_t* dir,
1532
+ uv_fs_cb cb);
1533
+ UV_EXTERN int uv_fs_closedir(uv_loop_t* loop,
1534
+ uv_fs_t* req,
1535
+ uv_dir_t* dir,
1536
+ uv_fs_cb cb);
1157
1537
  UV_EXTERN int uv_fs_stat(uv_loop_t* loop,
1158
1538
  uv_fs_t* req,
1159
1539
  const char* path,
@@ -1209,6 +1589,12 @@ UV_EXTERN int uv_fs_futime(uv_loop_t* loop,
1209
1589
  double atime,
1210
1590
  double mtime,
1211
1591
  uv_fs_cb cb);
1592
+ UV_EXTERN int uv_fs_lutime(uv_loop_t* loop,
1593
+ uv_fs_t* req,
1594
+ const char* path,
1595
+ double atime,
1596
+ double mtime,
1597
+ uv_fs_cb cb);
1212
1598
  UV_EXTERN int uv_fs_lstat(uv_loop_t* loop,
1213
1599
  uv_fs_t* req,
1214
1600
  const char* path,
@@ -1262,6 +1648,16 @@ UV_EXTERN int uv_fs_fchown(uv_loop_t* loop,
1262
1648
  uv_uid_t uid,
1263
1649
  uv_gid_t gid,
1264
1650
  uv_fs_cb cb);
1651
+ UV_EXTERN int uv_fs_lchown(uv_loop_t* loop,
1652
+ uv_fs_t* req,
1653
+ const char* path,
1654
+ uv_uid_t uid,
1655
+ uv_gid_t gid,
1656
+ uv_fs_cb cb);
1657
+ UV_EXTERN int uv_fs_statfs(uv_loop_t* loop,
1658
+ uv_fs_t* req,
1659
+ const char* path,
1660
+ uv_fs_cb cb);
1265
1661
 
1266
1662
 
1267
1663
  enum uv_fs_event {
@@ -1309,6 +1705,9 @@ UV_EXTERN int uv_signal_init(uv_loop_t* loop, uv_signal_t* handle);
1309
1705
  UV_EXTERN int uv_signal_start(uv_signal_t* handle,
1310
1706
  uv_signal_cb signal_cb,
1311
1707
  int signum);
1708
+ UV_EXTERN int uv_signal_start_oneshot(uv_signal_t* handle,
1709
+ uv_signal_cb signal_cb,
1710
+ int signum);
1312
1711
  UV_EXTERN int uv_signal_stop(uv_signal_t* handle);
1313
1712
 
1314
1713
  UV_EXTERN void uv_loadavg(double avg[3]);
@@ -1360,10 +1759,46 @@ UV_EXTERN int uv_ip6_addr(const char* ip, int port, struct sockaddr_in6* addr);
1360
1759
 
1361
1760
  UV_EXTERN int uv_ip4_name(const struct sockaddr_in* src, char* dst, size_t size);
1362
1761
  UV_EXTERN int uv_ip6_name(const struct sockaddr_in6* src, char* dst, size_t size);
1762
+ UV_EXTERN int uv_ip_name(const struct sockaddr* src, char* dst, size_t size);
1363
1763
 
1364
1764
  UV_EXTERN int uv_inet_ntop(int af, const void* src, char* dst, size_t size);
1365
1765
  UV_EXTERN int uv_inet_pton(int af, const char* src, void* dst);
1366
1766
 
1767
+
1768
+ struct uv_random_s {
1769
+ UV_REQ_FIELDS
1770
+ /* read-only */
1771
+ uv_loop_t* loop;
1772
+ /* private */
1773
+ int status;
1774
+ void* buf;
1775
+ size_t buflen;
1776
+ uv_random_cb cb;
1777
+ struct uv__work work_req;
1778
+ };
1779
+
1780
+ UV_EXTERN int uv_random(uv_loop_t* loop,
1781
+ uv_random_t* req,
1782
+ void *buf,
1783
+ size_t buflen,
1784
+ unsigned flags, /* For future extension; must be 0. */
1785
+ uv_random_cb cb);
1786
+
1787
+ #if defined(IF_NAMESIZE)
1788
+ # define UV_IF_NAMESIZE (IF_NAMESIZE + 1)
1789
+ #elif defined(IFNAMSIZ)
1790
+ # define UV_IF_NAMESIZE (IFNAMSIZ + 1)
1791
+ #else
1792
+ # define UV_IF_NAMESIZE (16 + 1)
1793
+ #endif
1794
+
1795
+ UV_EXTERN int uv_if_indextoname(unsigned int ifindex,
1796
+ char* buffer,
1797
+ size_t* size);
1798
+ UV_EXTERN int uv_if_indextoiid(unsigned int ifindex,
1799
+ char* buffer,
1800
+ size_t* size);
1801
+
1367
1802
  UV_EXTERN int uv_exepath(char* buffer, size_t* size);
1368
1803
 
1369
1804
  UV_EXTERN int uv_cwd(char* buffer, size_t* size);
@@ -1372,8 +1807,12 @@ UV_EXTERN int uv_chdir(const char* dir);
1372
1807
 
1373
1808
  UV_EXTERN uint64_t uv_get_free_memory(void);
1374
1809
  UV_EXTERN uint64_t uv_get_total_memory(void);
1810
+ UV_EXTERN uint64_t uv_get_constrained_memory(void);
1811
+ UV_EXTERN uint64_t uv_get_available_memory(void);
1375
1812
 
1813
+ UV_EXTERN int uv_clock_gettime(uv_clock_id clock_id, uv_timespec64_t* ts);
1376
1814
  UV_EXTERN uint64_t uv_hrtime(void);
1815
+ UV_EXTERN void uv_sleep(unsigned int msec);
1377
1816
 
1378
1817
  UV_EXTERN void uv_disable_stdio_inheritance(void);
1379
1818
 
@@ -1383,6 +1822,7 @@ UV_EXTERN int uv_dlsym(uv_lib_t* lib, const char* name, void** ptr);
1383
1822
  UV_EXTERN const char* uv_dlerror(const uv_lib_t* lib);
1384
1823
 
1385
1824
  UV_EXTERN int uv_mutex_init(uv_mutex_t* handle);
1825
+ UV_EXTERN int uv_mutex_init_recursive(uv_mutex_t* handle);
1386
1826
  UV_EXTERN void uv_mutex_destroy(uv_mutex_t* handle);
1387
1827
  UV_EXTERN void uv_mutex_lock(uv_mutex_t* handle);
1388
1828
  UV_EXTERN int uv_mutex_trylock(uv_mutex_t* handle);
@@ -1424,9 +1864,37 @@ UV_EXTERN void uv_key_delete(uv_key_t* key);
1424
1864
  UV_EXTERN void* uv_key_get(uv_key_t* key);
1425
1865
  UV_EXTERN void uv_key_set(uv_key_t* key, void* value);
1426
1866
 
1867
+ UV_EXTERN int uv_gettimeofday(uv_timeval64_t* tv);
1868
+
1427
1869
  typedef void (*uv_thread_cb)(void* arg);
1428
1870
 
1429
1871
  UV_EXTERN int uv_thread_create(uv_thread_t* tid, uv_thread_cb entry, void* arg);
1872
+
1873
+ typedef enum {
1874
+ UV_THREAD_NO_FLAGS = 0x00,
1875
+ UV_THREAD_HAS_STACK_SIZE = 0x01
1876
+ } uv_thread_create_flags;
1877
+
1878
+ struct uv_thread_options_s {
1879
+ unsigned int flags;
1880
+ size_t stack_size;
1881
+ /* More fields may be added at any time. */
1882
+ };
1883
+
1884
+ typedef struct uv_thread_options_s uv_thread_options_t;
1885
+
1886
+ UV_EXTERN int uv_thread_create_ex(uv_thread_t* tid,
1887
+ const uv_thread_options_t* params,
1888
+ uv_thread_cb entry,
1889
+ void* arg);
1890
+ UV_EXTERN int uv_thread_setaffinity(uv_thread_t* tid,
1891
+ char* cpumask,
1892
+ char* oldmask,
1893
+ size_t mask_size);
1894
+ UV_EXTERN int uv_thread_getaffinity(uv_thread_t* tid,
1895
+ char* cpumask,
1896
+ size_t mask_size);
1897
+ UV_EXTERN int uv_thread_getcpu(void);
1430
1898
  UV_EXTERN uv_thread_t uv_thread_self(void);
1431
1899
  UV_EXTERN int uv_thread_join(uv_thread_t *tid);
1432
1900
  UV_EXTERN int uv_thread_equal(const uv_thread_t* t1, const uv_thread_t* t2);
@@ -1448,13 +1916,32 @@ struct uv_loop_s {
1448
1916
  void* data;
1449
1917
  /* Loop reference counting. */
1450
1918
  unsigned int active_handles;
1451
- void* handle_queue[2];
1452
- void* active_reqs[2];
1919
+ struct uv__queue handle_queue;
1920
+ union {
1921
+ void* unused;
1922
+ unsigned int count;
1923
+ } active_reqs;
1924
+ /* Internal storage for future extensions. */
1925
+ void* internal_fields;
1453
1926
  /* Internal flag to signal loop stop. */
1454
1927
  unsigned int stop_flag;
1455
1928
  UV_LOOP_PRIVATE_FIELDS
1456
1929
  };
1457
1930
 
1931
+ UV_EXTERN void* uv_loop_get_data(const uv_loop_t*);
1932
+ UV_EXTERN void uv_loop_set_data(uv_loop_t*, void* data);
1933
+
1934
+ /* Unicode utilities needed for dealing with Windows. */
1935
+ UV_EXTERN size_t uv_utf16_length_as_wtf8(const uint16_t* utf16,
1936
+ ssize_t utf16_len);
1937
+ UV_EXTERN int uv_utf16_to_wtf8(const uint16_t* utf16,
1938
+ ssize_t utf16_len,
1939
+ char** wtf8_ptr,
1940
+ size_t* wtf8_len_ptr);
1941
+ UV_EXTERN ssize_t uv_wtf8_length_as_utf16(const char* wtf8);
1942
+ UV_EXTERN void uv_wtf8_to_utf16(const char* wtf8,
1943
+ uint16_t* utf16,
1944
+ size_t utf16_len);
1458
1945
 
1459
1946
  /* Don't export the private CPP symbols. */
1460
1947
  #undef UV_HANDLE_TYPE_PRIVATE
@@ -1475,6 +1962,7 @@ struct uv_loop_s {
1475
1962
  #undef UV_SIGNAL_PRIVATE_FIELDS
1476
1963
  #undef UV_LOOP_PRIVATE_FIELDS
1477
1964
  #undef UV_LOOP_PRIVATE_PLATFORM_FIELDS
1965
+ #undef UV__ERR
1478
1966
 
1479
1967
  #ifdef __cplusplus
1480
1968
  }