passenger 6.1.8 → 6.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (662) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +56 -2
  3. data/CONTRIBUTING.md +7 -311
  4. data/CONTRIBUTORS +1 -0
  5. data/LICENSE +1 -1
  6. data/README.md +2 -2
  7. data/Rakefile +1 -1
  8. data/bin/passenger +1 -1
  9. data/bin/passenger-config +1 -1
  10. data/bin/passenger-install-apache2-module +1 -1
  11. data/bin/passenger-install-nginx-module +4 -9
  12. data/bin/passenger-memory-stats +1 -1
  13. data/bin/passenger-status +1 -1
  14. data/build/agent.rb +13 -15
  15. data/build/apache2.rb +13 -16
  16. data/build/basics.rb +10 -13
  17. data/build/common_library.rb +5 -9
  18. data/build/cxx_tests.rb +40 -12
  19. data/build/integration_tests.rb +5 -2
  20. data/build/misc.rb +1 -1
  21. data/build/nginx.rb +1 -1
  22. data/build/node_tests.rb +1 -1
  23. data/build/oxt_tests.rb +6 -8
  24. data/build/packaging.rb +1 -1
  25. data/build/ruby_extension.rb +1 -1
  26. data/build/ruby_tests.rb +1 -1
  27. data/build/schema_printer.rb +13 -15
  28. data/build/support/cplusplus.rb +61 -69
  29. data/build/support/cxx_dependency_map.rb +1488 -666
  30. data/build/support/general.rb +1 -1
  31. data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
  32. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +3 -1
  33. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +1 -1
  34. data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
  35. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +3 -1
  36. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +3 -1
  37. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +1 -1
  38. data/build/test_basics.rb +1 -1
  39. data/dev/copy_boost_headers +1 -1
  40. data/dev/index_cxx_dependencies.rb +6 -2
  41. data/dev/libev-changes.patch +108 -0
  42. data/dev/nginx_version_sha256 +1 -1
  43. data/dev/ruby_server.rb +1 -6
  44. data/dev/runner +2 -0
  45. data/dev/upgrading_libuv.sh +16 -0
  46. data/doc/BasicArchitectureOverview.md +55 -0
  47. data/doc/BuildCaching.md +23 -0
  48. data/doc/BuildSystem.md +49 -0
  49. data/doc/DebuggingAndStressTesting.md +2 -0
  50. data/doc/DesignAspects/LimitedGemDependencies.md +1 -0
  51. data/doc/DevEnvironmentSetup.md +46 -0
  52. data/doc/DevHandbook.md +28 -0
  53. data/doc/Packaging.md +1 -1
  54. data/doc/RunningTests.md +88 -0
  55. data/doc/{TempFileHandling.md → SecureTempFileHandling.md} +1 -1
  56. data/doc/{CxxTestingGuide.md → WritingCxxTests.md} +1 -20
  57. data/src/agent/AgentMain.cpp +1 -1
  58. data/src/agent/Core/ApiServer.h +1 -1
  59. data/src/agent/Core/ApplicationPool/AbstractSession.h +1 -1
  60. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +1 -1
  61. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +1 -1
  62. data/src/agent/Core/ApplicationPool/Common.h +1 -1
  63. data/src/agent/Core/ApplicationPool/Context.h +1 -1
  64. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +1 -1
  65. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +1 -1
  66. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +1 -1
  67. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +1 -1
  68. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  69. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
  70. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +1 -1
  71. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +1 -1
  72. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -1
  73. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +1 -1
  74. data/src/agent/Core/ApplicationPool/Group.h +1 -1
  75. data/src/agent/Core/ApplicationPool/Implementation.cpp +1 -1
  76. data/src/agent/Core/ApplicationPool/Options.h +1 -1
  77. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +1 -1
  78. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
  79. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +1 -1
  80. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +1 -1
  81. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +1 -1
  82. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +1 -1
  83. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
  84. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  85. data/src/agent/Core/ApplicationPool/Pool.h +1 -1
  86. data/src/agent/Core/ApplicationPool/Process.cpp +1 -1
  87. data/src/agent/Core/ApplicationPool/Process.h +1 -1
  88. data/src/agent/Core/ApplicationPool/Session.h +1 -1
  89. data/src/agent/Core/ApplicationPool/Socket.h +1 -1
  90. data/src/agent/Core/ApplicationPool/TestSession.h +1 -1
  91. data/src/agent/Core/Config.h +3 -2
  92. data/src/agent/Core/ConfigChange.cpp +1 -1
  93. data/src/agent/Core/ConfigChange.h +1 -1
  94. data/src/agent/Core/Controller/AppResponse.h +1 -1
  95. data/src/agent/Core/Controller/BufferBody.cpp +1 -1
  96. data/src/agent/Core/Controller/CheckoutSession.cpp +8 -5
  97. data/src/agent/Core/Controller/Client.h +1 -1
  98. data/src/agent/Core/Controller/Config.cpp +1 -1
  99. data/src/agent/Core/Controller/Config.h +2 -2
  100. data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
  101. data/src/agent/Core/Controller/Hooks.cpp +12 -9
  102. data/src/agent/Core/Controller/Implementation.cpp +1 -1
  103. data/src/agent/Core/Controller/InitRequest.cpp +1 -1
  104. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -1
  105. data/src/agent/Core/Controller/InternalUtils.cpp +1 -1
  106. data/src/agent/Core/Controller/Miscellaneous.cpp +1 -1
  107. data/src/agent/Core/Controller/Request.h +1 -1
  108. data/src/agent/Core/Controller/SendRequest.cpp +1 -1
  109. data/src/agent/Core/Controller/StateInspection.cpp +1 -1
  110. data/src/agent/Core/Controller/TurboCaching.h +1 -1
  111. data/src/agent/Core/Controller.h +1 -1
  112. data/src/agent/Core/CoreMain.cpp +1 -1
  113. data/src/agent/Core/OptionParser.h +1 -1
  114. data/src/agent/Core/ResponseCache.h +1 -1
  115. data/src/agent/Core/SecurityUpdateChecker.h +1 -1
  116. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +1 -1
  117. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +1 -1
  118. data/src/agent/Core/SpawningKit/Config.h +1 -1
  119. data/src/agent/Core/SpawningKit/Context.h +1 -1
  120. data/src/agent/Core/SpawningKit/DirectSpawner.h +1 -1
  121. data/src/agent/Core/SpawningKit/DummySpawner.h +1 -1
  122. data/src/agent/Core/SpawningKit/ErrorRenderer.h +1 -1
  123. data/src/agent/Core/SpawningKit/Exceptions.h +63 -2
  124. data/src/agent/Core/SpawningKit/Factory.h +1 -1
  125. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
  126. data/src/agent/Core/SpawningKit/Handshake/Perform.h +3 -2
  127. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  128. data/src/agent/Core/SpawningKit/Handshake/Session.h +1 -1
  129. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +1 -1
  130. data/src/agent/Core/SpawningKit/Journey.h +1 -1
  131. data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
  132. data/src/agent/Core/SpawningKit/README.md +3 -3
  133. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +1 -1
  134. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +1 -1
  135. data/src/agent/Core/SpawningKit/Result.h +1 -1
  136. data/src/agent/Core/SpawningKit/SmartSpawner.h +17 -17
  137. data/src/agent/Core/SpawningKit/Spawner.h +1 -1
  138. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +1 -1
  139. data/src/agent/Core/TelemetryCollector.h +1 -1
  140. data/src/agent/ExecHelper/ExecHelperMain.cpp +1 -1
  141. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +1 -1
  142. data/src/agent/MainFunctions.h +1 -1
  143. data/src/agent/Shared/ApiAccountUtils.h +4 -3
  144. data/src/agent/Shared/ApiServerUtils.h +15 -11
  145. data/src/agent/Shared/ApplicationPoolApiKey.h +1 -1
  146. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +1 -1
  147. data/src/agent/Shared/Fundamentals/AbortHandler.h +1 -1
  148. data/src/agent/Shared/Fundamentals/Initialization.cpp +1 -1
  149. data/src/agent/Shared/Fundamentals/Initialization.h +1 -1
  150. data/src/agent/Shared/Fundamentals/Utils.cpp +1 -1
  151. data/src/agent/Shared/Fundamentals/Utils.h +1 -1
  152. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +1 -1
  153. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +1 -1
  154. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +1 -1
  155. data/src/agent/Watchdog/{AgentWatcher.cpp → AgentWatcher.h} +28 -1
  156. data/src/agent/Watchdog/ApiServer.h +25 -1
  157. data/src/agent/Watchdog/Config.h +2 -2
  158. data/src/agent/Watchdog/{CoreWatcher.cpp → CoreWatcher.h} +18 -1
  159. data/src/agent/Watchdog/{InstanceDirToucher.cpp → InstanceDirToucher.h} +20 -1
  160. data/src/agent/Watchdog/WatchdogMain.cpp +11 -77
  161. data/src/agent/Watchdog/WorkingObjects.h +108 -0
  162. data/src/apache2_module/Bucket.cpp +1 -1
  163. data/src/apache2_module/Bucket.h +1 -1
  164. data/src/apache2_module/CBindings.cpp +1 -1
  165. data/src/apache2_module/Config.cpp +1 -1
  166. data/src/apache2_module/Config.h +1 -1
  167. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +104 -104
  168. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  169. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +1 -1
  170. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +1 -1
  171. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +1 -1
  172. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +1 -1
  173. data/src/apache2_module/ConfigGeneral/Common.h +1 -1
  174. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +1 -1
  175. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +1 -1
  176. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +1 -1
  177. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +1 -1
  178. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +1 -1
  179. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +1 -1
  180. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +1 -1
  181. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
  182. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +1 -1
  183. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +1 -1
  184. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +1 -1
  185. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  186. data/src/apache2_module/DirectoryMapper.h +1 -1
  187. data/src/apache2_module/Hooks.cpp +8 -2
  188. data/src/apache2_module/Hooks.h +1 -1
  189. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +1 -1
  190. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +1 -1
  191. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +1 -1
  192. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  193. data/src/apache2_module/Utils.h +1 -1
  194. data/src/apache2_module/mod_passenger.c +1 -1
  195. data/src/cxx_supportlib/Algorithms/Hasher.cpp +1 -1
  196. data/src/cxx_supportlib/Algorithms/Hasher.h +1 -1
  197. data/src/cxx_supportlib/Algorithms/MovingAverage.h +1 -1
  198. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +1 -1
  199. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +1 -1
  200. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +1 -1
  201. data/src/cxx_supportlib/AppTypeDetector/Detector.h +1 -1
  202. data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
  203. data/src/cxx_supportlib/BackgroundEventLoop.h +1 -1
  204. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +1 -1
  205. data/src/cxx_supportlib/ConfigKit/Common.h +1 -1
  206. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +1 -1
  207. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +1 -1
  208. data/src/cxx_supportlib/ConfigKit/IN_PRACTICE.md +1 -3
  209. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +3 -3
  210. data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
  211. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +1 -1
  212. data/src/cxx_supportlib/ConfigKit/Store.h +1 -1
  213. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +1 -1
  214. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +1 -1
  215. data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
  216. data/src/cxx_supportlib/ConfigKit/Utils.h +1 -1
  217. data/src/cxx_supportlib/Constants.h +2 -2
  218. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +1 -1
  219. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +1 -1
  220. data/src/cxx_supportlib/DataStructures/LString.cpp +1 -1
  221. data/src/cxx_supportlib/DataStructures/LString.h +1 -1
  222. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +1 -1
  223. data/src/cxx_supportlib/DataStructures/StringMap.h +1 -1
  224. data/src/cxx_supportlib/Exceptions.cpp +1 -1
  225. data/src/cxx_supportlib/Exceptions.h +1 -1
  226. data/src/cxx_supportlib/FileDescriptor.h +1 -1
  227. data/src/cxx_supportlib/FileTools/FileManip.cpp +1 -1
  228. data/src/cxx_supportlib/FileTools/FileManip.h +1 -1
  229. data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
  230. data/src/cxx_supportlib/FileTools/PathManip.h +1 -1
  231. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +1 -1
  232. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +1 -1
  233. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +1 -1
  234. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +1 -1
  235. data/src/cxx_supportlib/Hooks.h +1 -1
  236. data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
  237. data/src/cxx_supportlib/IOTools/IOUtils.cpp +12 -27
  238. data/src/cxx_supportlib/IOTools/IOUtils.h +1 -1
  239. data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
  240. data/src/cxx_supportlib/IOTools/MessageSerialization.h +1 -1
  241. data/src/cxx_supportlib/InstanceDirectory.h +1 -1
  242. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +1 -1
  243. data/src/cxx_supportlib/JsonTools/Autocast.h +1 -1
  244. data/src/cxx_supportlib/JsonTools/CBindings.cpp +1 -1
  245. data/src/cxx_supportlib/JsonTools/CBindings.h +1 -1
  246. data/src/cxx_supportlib/JsonTools/JsonUtils.h +1 -1
  247. data/src/cxx_supportlib/LoggingKit/Assert.h +1 -1
  248. data/src/cxx_supportlib/LoggingKit/Config.h +2 -1
  249. data/src/cxx_supportlib/LoggingKit/Context.h +1 -1
  250. data/src/cxx_supportlib/LoggingKit/Forward.h +1 -1
  251. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +11 -1
  252. data/src/cxx_supportlib/LoggingKit/Logging.h +1 -1
  253. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +1 -1
  254. data/src/cxx_supportlib/LveLoggingDecorator.h +1 -1
  255. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +1 -1
  256. data/src/cxx_supportlib/MemoryKit/mbuf.h +1 -1
  257. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  258. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  259. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +1 -1
  260. data/src/cxx_supportlib/ProcessManagement/Ruby.h +1 -1
  261. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +1 -1
  262. data/src/cxx_supportlib/ProcessManagement/Spawn.h +1 -1
  263. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +1 -1
  264. data/src/cxx_supportlib/ProcessManagement/Utils.h +1 -1
  265. data/src/cxx_supportlib/RandomGenerator.h +1 -1
  266. data/src/cxx_supportlib/ResourceLocator.h +1 -1
  267. data/src/cxx_supportlib/SafeLibev.h +1 -1
  268. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +9 -27
  269. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -2
  270. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +1 -1
  271. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +4 -1
  272. data/src/cxx_supportlib/ServerKit/Channel.h +1 -1
  273. data/src/cxx_supportlib/ServerKit/Client.h +1 -1
  274. data/src/cxx_supportlib/ServerKit/ClientRef.h +1 -1
  275. data/src/cxx_supportlib/ServerKit/Config.h +1 -1
  276. data/src/cxx_supportlib/ServerKit/Context.h +1 -1
  277. data/src/cxx_supportlib/ServerKit/CookieUtils.h +1 -1
  278. data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
  279. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +1 -1
  280. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +1 -1
  281. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +54 -2
  282. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +1 -1
  283. data/src/cxx_supportlib/ServerKit/HeaderTable.h +1 -1
  284. data/src/cxx_supportlib/ServerKit/Hooks.h +1 -1
  285. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  286. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +1 -1
  287. data/src/cxx_supportlib/ServerKit/HttpClient.h +1 -1
  288. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
  289. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
  290. data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
  291. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +1 -1
  292. data/src/cxx_supportlib/ServerKit/HttpServer.h +1 -1
  293. data/src/cxx_supportlib/ServerKit/Implementation.cpp +1 -1
  294. data/src/cxx_supportlib/ServerKit/Server.h +8 -23
  295. data/src/cxx_supportlib/StaticString.h +1 -1
  296. data/src/cxx_supportlib/StrIntTools/DateParsing.h +1 -1
  297. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +1 -1
  298. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +1 -1
  299. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +1 -1
  300. data/src/cxx_supportlib/StrIntTools/StringScanning.h +1 -1
  301. data/src/cxx_supportlib/StrIntTools/Template.h +1 -1
  302. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +1 -1
  303. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  304. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +1 -1
  305. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +1 -1
  306. data/src/cxx_supportlib/SystemTools/SystemTime.h +1 -1
  307. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +1 -1
  308. data/src/cxx_supportlib/SystemTools/UserDatabase.h +1 -1
  309. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +1 -1
  310. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +1 -1
  311. data/src/cxx_supportlib/Utils/BlockingQueue.h +1 -1
  312. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +1 -1
  313. data/src/cxx_supportlib/Utils/CachedFileStat.h +1 -1
  314. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +1 -1
  315. data/src/cxx_supportlib/Utils/ClassUtils.h +1 -1
  316. data/src/cxx_supportlib/Utils/Curl.h +1 -1
  317. data/src/cxx_supportlib/Utils/FastStringStream.h +1 -1
  318. data/src/cxx_supportlib/Utils/FileChangeChecker.h +1 -1
  319. data/src/cxx_supportlib/Utils/HttpConstants.h +1 -1
  320. data/src/cxx_supportlib/Utils/IniFile.h +1 -1
  321. data/src/cxx_supportlib/Utils/MessagePassing.h +1 -1
  322. data/src/cxx_supportlib/Utils/OptionParsing.h +1 -1
  323. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +1 -1
  324. data/src/cxx_supportlib/Utils/ScopeGuard.h +1 -1
  325. data/src/cxx_supportlib/Utils/Socket.cpp +67 -0
  326. data/src/cxx_supportlib/Utils/Socket.h +35 -0
  327. data/src/cxx_supportlib/Utils/SpeedMeter.h +1 -1
  328. data/src/cxx_supportlib/Utils/Timer.h +1 -1
  329. data/src/cxx_supportlib/Utils/VariantMap.h +1 -1
  330. data/src/cxx_supportlib/Utils.cpp +1 -1
  331. data/src/cxx_supportlib/Utils.h +1 -1
  332. data/src/cxx_supportlib/WatchdogLauncher.cpp +1 -1
  333. data/src/cxx_supportlib/WatchdogLauncher.h +1 -1
  334. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +1 -1
  335. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +1 -1
  336. data/src/cxx_supportlib/WrapperRegistry/Entry.h +1 -1
  337. data/src/cxx_supportlib/WrapperRegistry/Registry.h +1 -1
  338. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  340. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  342. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
  343. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
  344. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  345. data/src/cxx_supportlib/oxt/implementation.cpp +1 -1
  346. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  347. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  348. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  349. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  350. data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
  351. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  352. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  353. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +1 -1
  354. data/src/cxx_supportlib/vendor-copy/libuv/AUTHORS +353 -3
  355. data/src/cxx_supportlib/vendor-copy/libuv/ChangeLog +3981 -2
  356. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE +1 -28
  357. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-docs +396 -0
  358. data/src/cxx_supportlib/vendor-copy/libuv/LICENSE-extra +36 -0
  359. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.am +275 -58
  360. data/src/cxx_supportlib/vendor-copy/libuv/Makefile.in +4380 -2125
  361. data/src/cxx_supportlib/vendor-copy/libuv/aclocal.m4 +425 -221
  362. data/src/cxx_supportlib/vendor-copy/libuv/ar-lib +30 -10
  363. data/src/cxx_supportlib/vendor-copy/libuv/compile +31 -14
  364. data/src/cxx_supportlib/vendor-copy/libuv/config.guess +1084 -690
  365. data/src/cxx_supportlib/vendor-copy/libuv/config.sub +1844 -1297
  366. data/src/cxx_supportlib/vendor-copy/libuv/configure +6935 -3664
  367. data/src/cxx_supportlib/vendor-copy/libuv/configure.ac +43 -19
  368. data/src/cxx_supportlib/vendor-copy/libuv/depcomp +12 -11
  369. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-darwin.h → uv/darwin.h} +3 -3
  370. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-errno.h → uv/errno.h} +119 -60
  371. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-linux.h → uv/linux.h} +1 -1
  372. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/os390.h +33 -0
  373. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/posix.h +31 -0
  374. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-threadpool.h → uv/threadpool.h} +1 -1
  375. data/src/cxx_supportlib/vendor-copy/libuv/include/{tree.h → uv/tree.h} +3 -250
  376. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-unix.h → uv/unix.h} +186 -60
  377. data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-version.h → uv/version.h} +3 -3
  378. data/src/cxx_supportlib/vendor-copy/libuv/include/uv/win.h +703 -0
  379. data/src/cxx_supportlib/vendor-copy/libuv/include/uv.h +528 -40
  380. data/src/cxx_supportlib/vendor-copy/libuv/install-sh +110 -70
  381. data/src/cxx_supportlib/vendor-copy/libuv/libuv-static.pc.in +12 -0
  382. data/src/cxx_supportlib/vendor-copy/libuv/libuv.pc.in +4 -2
  383. data/src/cxx_supportlib/vendor-copy/libuv/ltmain.sh +995 -619
  384. data/src/cxx_supportlib/vendor-copy/libuv/m4/ax_pthread.m4 +485 -0
  385. data/src/cxx_supportlib/vendor-copy/libuv/m4/libtool.m4 +438 -289
  386. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-flags.m4 +21 -4
  387. data/src/cxx_supportlib/vendor-copy/libuv/m4/libuv-check-versions.m4 +7 -0
  388. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltoptions.m4 +69 -39
  389. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltsugar.m4 +1 -1
  390. data/src/cxx_supportlib/vendor-copy/libuv/m4/ltversion.m4 +7 -6
  391. data/src/cxx_supportlib/vendor-copy/libuv/m4/lt~obsolete.m4 +2 -2
  392. data/src/cxx_supportlib/vendor-copy/libuv/missing +55 -34
  393. data/src/cxx_supportlib/vendor-copy/libuv/src/fs-poll.c +52 -20
  394. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.c +560 -0
  395. data/src/cxx_supportlib/vendor-copy/libuv/src/idna.h +31 -0
  396. data/src/cxx_supportlib/vendor-copy/libuv/src/inet.c +5 -16
  397. data/src/cxx_supportlib/vendor-copy/libuv/src/queue.h +68 -86
  398. data/src/cxx_supportlib/vendor-copy/libuv/src/random.c +123 -0
  399. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.c +38 -0
  400. data/src/cxx_supportlib/vendor-copy/libuv/src/strscpy.h +39 -0
  401. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.c +52 -0
  402. data/src/cxx_supportlib/vendor-copy/libuv/src/strtok.h +27 -0
  403. data/src/cxx_supportlib/vendor-copy/libuv/src/thread-common.c +175 -0
  404. data/src/cxx_supportlib/vendor-copy/libuv/src/threadpool.c +172 -57
  405. data/src/cxx_supportlib/vendor-copy/libuv/src/{unix/timer.c → timer.c} +57 -29
  406. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix-common.c +89 -0
  407. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/aix.c +418 -256
  408. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/async.c +168 -129
  409. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-ifaddrs.c +163 -0
  410. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/bsd-proctitle.c +99 -0
  411. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/core.c +1312 -378
  412. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/cygwin.c +93 -0
  413. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-proctitle.c +18 -32
  414. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-stub.h +97 -0
  415. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin-syscalls.h +17 -0
  416. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/darwin.c +41 -139
  417. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/dl.c +1 -1
  418. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/freebsd.c +75 -235
  419. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fs.c +1308 -299
  420. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/fsevents.c +150 -148
  421. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getaddrinfo.c +58 -8
  422. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/getnameinfo.c +3 -2
  423. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/haiku.c +172 -0
  424. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/hurd.c +172 -0
  425. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/ibmi.c +542 -0
  426. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/internal.h +297 -106
  427. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/kqueue.c +325 -94
  428. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux.c +2708 -0
  429. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop-watcher.c +11 -11
  430. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/loop.c +105 -24
  431. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/netbsd.c +51 -157
  432. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-fsevents.c +42 -0
  433. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/no-proctitle.c +45 -0
  434. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/openbsd.c +42 -183
  435. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-proctitle.c +136 -0
  436. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.c +536 -0
  437. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390-syscalls.h +75 -0
  438. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/os390.c +1070 -0
  439. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pipe.c +324 -55
  440. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/poll.c +58 -11
  441. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-hrtime.c +36 -0
  442. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/posix-poll.c +385 -0
  443. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/process.c +795 -248
  444. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/procfs-exepath.c +45 -0
  445. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/proctitle.c +77 -22
  446. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/qnx.c +142 -0
  447. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-devurandom.c +93 -0
  448. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getentropy.c +57 -0
  449. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-getrandom.c +86 -0
  450. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/random-sysctl-linux.c +99 -0
  451. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/signal.c +147 -39
  452. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/stream.c +426 -474
  453. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sunos.c +240 -98
  454. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-loadavg.c +36 -0
  455. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/sysinfo-memory.c +42 -0
  456. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tcp.c +402 -91
  457. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/thread.c +497 -145
  458. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/tty.c +269 -45
  459. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/udp.c +695 -165
  460. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.c +463 -61
  461. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-common.h +248 -44
  462. data/src/cxx_supportlib/vendor-copy/libuv/src/uv-data-getter-setters.c +119 -0
  463. data/src/cxx_supportlib/vendor-copy/libuv/tsansupp.txt +2 -0
  464. data/src/cxx_supportlib/vendor-modified/libev/Changes +109 -0
  465. data/src/cxx_supportlib/vendor-modified/libev/Makefile.am +2 -1
  466. data/src/cxx_supportlib/vendor-modified/libev/Makefile.in +47 -33
  467. data/src/cxx_supportlib/vendor-modified/libev/README +2 -1
  468. data/src/cxx_supportlib/vendor-modified/libev/aclocal.m4 +1653 -1224
  469. data/src/cxx_supportlib/vendor-modified/libev/config.guess +376 -316
  470. data/src/cxx_supportlib/vendor-modified/libev/config.h.in +13 -2
  471. data/src/cxx_supportlib/vendor-modified/libev/config.sub +156 -154
  472. data/src/cxx_supportlib/vendor-modified/libev/configure +1431 -940
  473. data/src/cxx_supportlib/vendor-modified/libev/configure.ac +3 -3
  474. data/src/cxx_supportlib/vendor-modified/libev/depcomp +5 -5
  475. data/src/cxx_supportlib/vendor-modified/libev/ev++.h +109 -107
  476. data/src/cxx_supportlib/vendor-modified/libev/ev.c +807 -319
  477. data/src/cxx_supportlib/vendor-modified/libev/ev.h +111 -105
  478. data/src/cxx_supportlib/vendor-modified/libev/ev_epoll.c +42 -29
  479. data/src/cxx_supportlib/vendor-modified/libev/ev_iouring.c +694 -0
  480. data/src/cxx_supportlib/vendor-modified/libev/ev_kqueue.c +15 -9
  481. data/src/cxx_supportlib/vendor-modified/libev/ev_linuxaio.c +620 -0
  482. data/src/cxx_supportlib/vendor-modified/libev/ev_poll.c +19 -14
  483. data/src/cxx_supportlib/vendor-modified/libev/ev_port.c +8 -5
  484. data/src/cxx_supportlib/vendor-modified/libev/ev_select.c +6 -6
  485. data/src/cxx_supportlib/vendor-modified/libev/ev_vars.h +48 -3
  486. data/src/cxx_supportlib/vendor-modified/libev/ev_win32.c +2 -2
  487. data/src/cxx_supportlib/vendor-modified/libev/ev_wrap.h +72 -0
  488. data/src/cxx_supportlib/vendor-modified/libev/install-sh +23 -13
  489. data/src/cxx_supportlib/vendor-modified/libev/libev.m4 +6 -1
  490. data/src/cxx_supportlib/vendor-modified/libev/ltmain.sh +3581 -1993
  491. data/src/cxx_supportlib/vendor-modified/libev/missing +8 -8
  492. data/src/cxx_supportlib/vendor-modified/libev/mkinstalldirs +3 -3
  493. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +1 -1
  494. data/src/helper-scripts/backtrace-sanitizer.rb +1 -1
  495. data/src/helper-scripts/crash-watch.rb +1 -1
  496. data/src/helper-scripts/download_binaries/extconf.rb +1 -1
  497. data/src/helper-scripts/meteor-loader.rb +4 -1
  498. data/src/helper-scripts/node-loader.js +1 -1
  499. data/src/helper-scripts/prespawn +1 -1
  500. data/src/helper-scripts/rack-loader.rb +4 -1
  501. data/src/helper-scripts/rack-preloader.rb +4 -1
  502. data/src/helper-scripts/wsgi-loader.py +1 -1
  503. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +1 -1
  504. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +1 -1
  505. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +1 -1
  506. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +1 -1
  507. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +1 -1
  508. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +1 -1
  509. data/src/nginx_module/Configuration.c +1 -1
  510. data/src/nginx_module/Configuration.h +1 -1
  511. data/src/nginx_module/ContentHandler.c +14 -2
  512. data/src/nginx_module/ContentHandler.h +1 -1
  513. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +1 -1
  514. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  515. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +1 -1
  516. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +1 -1
  517. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +1 -1
  518. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  519. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +1 -1
  520. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +1 -1
  521. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +1 -1
  522. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  523. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +1 -1
  524. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +1 -1
  525. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +1 -1
  526. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +1 -1
  527. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +1 -1
  528. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +1 -1
  529. data/src/nginx_module/StaticContentHandler.c +1 -1
  530. data/src/nginx_module/StaticContentHandler.h +1 -1
  531. data/src/nginx_module/ngx_http_passenger_module.c +1 -1
  532. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  533. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +1 -1
  534. data/src/ruby_native_extension/extconf.rb +1 -1
  535. data/src/ruby_native_extension/passenger_native_support.c +1 -1
  536. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +1 -1
  537. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +3 -1
  538. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +3 -1
  539. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +4 -12
  540. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +3 -1
  541. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -1
  542. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +7 -1
  543. data/src/ruby_supportlib/phusion_passenger/common_library.rb +11 -10
  544. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +3 -1
  545. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +3 -1
  546. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +3 -1
  547. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +3 -1
  548. data/src/ruby_supportlib/phusion_passenger/config/command.rb +3 -1
  549. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +3 -1
  550. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +3 -1
  551. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +3 -1
  552. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -1
  553. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -1
  554. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -1
  555. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -1
  556. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +5 -1
  557. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +3 -1
  558. data/src/ruby_supportlib/phusion_passenger/config/main.rb +3 -1
  559. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +5 -2
  560. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +8 -1
  561. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +3 -1
  562. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +3 -1
  563. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +3 -1
  564. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +5 -1
  565. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +3 -1
  566. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +1 -1
  567. data/src/ruby_supportlib/phusion_passenger/constants.rb +5 -1
  568. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +3 -1
  569. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +3 -1
  570. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +1 -1
  571. data/src/ruby_supportlib/phusion_passenger/message_client.rb +1 -1
  572. data/src/ruby_supportlib/phusion_passenger/native_support.rb +1 -1
  573. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +1 -1
  574. data/src/ruby_supportlib/phusion_passenger/packaging.rb +7 -3
  575. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +3 -1
  576. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +3 -1
  577. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +3 -1
  578. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +197 -11
  579. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +2 -1
  580. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +3 -1
  581. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +3 -1
  582. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck.rb +4 -0
  583. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +3 -1
  584. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +3 -1
  585. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +3 -1
  586. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +3 -1
  587. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +3 -1
  588. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +3 -1
  589. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +3 -1
  590. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +3 -1
  591. data/src/ruby_supportlib/phusion_passenger/plugin.rb +1 -1
  592. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +2 -1
  593. data/src/ruby_supportlib/phusion_passenger/public_api.rb +3 -1
  594. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +7 -1
  595. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +3 -1
  596. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +7 -1
  597. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +13 -1
  598. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +4 -7
  599. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +1 -1
  600. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +5 -1
  601. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +1 -1
  602. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +1 -1
  603. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +3 -1
  604. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +3 -1
  605. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +5 -1
  606. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +5 -1
  607. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +5 -1
  608. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +3 -1
  609. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +8 -2
  610. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +10 -8
  611. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +3 -1
  612. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +3 -1
  613. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +3 -1
  614. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +3 -1
  615. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +5 -1
  616. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +5 -1
  617. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +3 -1
  618. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +3 -1
  619. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +4 -0
  620. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +3 -1
  621. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +5 -1
  622. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
  623. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +3 -1
  624. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +2 -0
  625. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +3 -1
  626. data/src/ruby_supportlib/phusion_passenger/utils/tmpio.rb +2 -0
  627. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +5 -13
  628. data/src/ruby_supportlib/phusion_passenger/utils.rb +3 -1
  629. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +3 -1
  630. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +3 -1
  631. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +3 -1
  632. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +3 -1
  633. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +5 -1
  634. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +3 -1
  635. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +10 -6
  636. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +4 -3
  637. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +8 -4
  638. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +395 -579
  639. data/src/ruby_supportlib/phusion_passenger.rb +10 -8
  640. data/src/schema_printer/SchemaPrinterMain.cpp +1 -1
  641. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +1 -1
  642. metadata +76 -36
  643. data/doc/DeveloperQuickstart.md +0 -70
  644. data/src/README.md +0 -7
  645. data/src/cxx_supportlib/vendor-copy/libuv/README.md +0 -245
  646. data/src/cxx_supportlib/vendor-copy/libuv/checksparse.sh +0 -234
  647. data/src/cxx_supportlib/vendor-copy/libuv/common.gypi +0 -210
  648. data/src/cxx_supportlib/vendor-copy/libuv/gyp_uv.py +0 -93
  649. data/src/cxx_supportlib/vendor-copy/libuv/include/android-ifaddrs.h +0 -54
  650. data/src/cxx_supportlib/vendor-copy/libuv/include/pthread-fixes.h +0 -72
  651. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/android-ifaddrs.c +0 -703
  652. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/atomic-ops.h +0 -77
  653. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-core.c +0 -899
  654. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-inotify.c +0 -285
  655. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.c +0 -471
  656. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/linux-syscalls.h +0 -158
  657. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/pthread-fixes.c +0 -104
  658. data/src/cxx_supportlib/vendor-copy/libuv/src/unix/spinlock.h +0 -53
  659. data/src/cxx_supportlib/vendor-copy/libuv/uv.gyp +0 -508
  660. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-aix.h → uv/aix.h} +0 -0
  661. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-bsd.h → uv/bsd.h} +0 -0
  662. /data/src/cxx_supportlib/vendor-copy/libuv/include/{uv-sunos.h → uv/sunos.h} +0 -0
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2012-2025 Asynchronous B.V.
3
+ * Copyright (c) 2012-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -486,6 +486,53 @@ private:
486
486
  FBC_DEBUG("pushBuffer() completed: nbuffers = " << nbuffers << ", bytesBuffered = " << bytesBuffered);
487
487
  }
488
488
 
489
+ /**
490
+ * Like `pushBuffer()`, but if `buffer` merely wraps memory owned by the caller
491
+ * (i.e. it has no mbuf_block that keeps its memory alive), then the data is first
492
+ * copied into mbufs from the pool. Large buffers are split over multiple mbufs.
493
+ *
494
+ * Must be used for all buffers queued in the in-file mode. There, buffers stay
495
+ * queued until the writer has moved them to the file, which may be long after the
496
+ * reader has passed them to the underlying channel. Callers (e.g. HttpServer
497
+ * writing a response body from the request's memory pool) only guarantee that
498
+ * such memory stays valid until the reader has passed it on.
499
+ */
500
+ void pushBufferWithOwnedMemory(const MemoryKit::mbuf &buffer) {
501
+ if (buffer.mbuf_block != NULL || buffer.empty()) {
502
+ pushBuffer(buffer);
503
+ return;
504
+ }
505
+
506
+ size_t chunkSize = MemoryKit::mbuf_pool_data_size(&ctx->mbuf_pool);
507
+ const char *pos = buffer.start;
508
+ while (pos < buffer.end) {
509
+ size_t size = std::min<size_t>(buffer.end - pos, chunkSize);
510
+ MemoryKit::mbuf copy = MemoryKit::mbuf_get(&ctx->mbuf_pool);
511
+ memcpy(copy.start, pos, size);
512
+ pushBuffer(MemoryKit::mbuf(copy, 0, size));
513
+ pos += size;
514
+ }
515
+ }
516
+
517
+ /**
518
+ * Called when switching to the in-file mode: ensures that buffers that were
519
+ * queued during the in-memory mode don't reference caller-owned memory either.
520
+ * See `pushBufferWithOwnedMemory()` for why.
521
+ */
522
+ void takeOwnershipOfQueuedBuffers() {
523
+ deque<MemoryKit::mbuf> buffers;
524
+ if (nbuffers > 0) {
525
+ buffers.push_back(firstBuffer);
526
+ buffers.insert(buffers.end(), moreBuffers.begin(), moreBuffers.end());
527
+ }
528
+ clearBuffers(false);
529
+
530
+ deque<MemoryKit::mbuf>::const_iterator it, end = buffers.end();
531
+ for (it = buffers.begin(); it != end; it++) {
532
+ pushBufferWithOwnedMemory(*it);
533
+ }
534
+ }
535
+
489
536
  void popBuffer() {
490
537
  assert(bytesBuffered >= firstBuffer.size());
491
538
  bytesBuffered -= firstBuffer.size();
@@ -836,6 +883,7 @@ private:
836
883
  P_ASSERT_EQ(inFileMode, 0);
837
884
 
838
885
  FBC_DEBUG("Switching to in-file mode");
886
+ takeOwnershipOfQueuedBuffers();
839
887
  mode = IN_FILE_MODE;
840
888
  inFileMode = boost::make_shared<InFileMode>(ctx->libuv);
841
889
  createBufferFile();
@@ -1423,7 +1471,11 @@ public:
1423
1471
  FBC_DEBUG("Feeding aborted: EOF or error detected");
1424
1472
  return;
1425
1473
  }
1426
- pushBuffer(buffer);
1474
+ if (mode == IN_FILE_MODE) {
1475
+ pushBufferWithOwnedMemory(buffer);
1476
+ } else {
1477
+ pushBuffer(buffer);
1478
+ }
1427
1479
  if (mode == IN_MEMORY_MODE && passedThreshold()) {
1428
1480
  switchToInFileMode();
1429
1481
  } else if (mode == IN_FILE_MODE
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2012-2025 Asynchronous B.V.
3
+ * Copyright (c) 2012-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2012-2025 Asynchronous B.V.
3
+ * Copyright (c) 2012-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -60,6 +60,7 @@
60
60
  #include <ConfigKit/ConfigKit.h>
61
61
  #include <Algorithms/MovingAverage.h>
62
62
  #include <Utils.h>
63
+ #include <Utils/Socket.h>
63
64
  #include <Utils/ScopeGuard.h>
64
65
  #include <StrIntTools/StrIntUtils.h>
65
66
  #include <IOTools/IOUtils.h>
@@ -749,7 +750,9 @@ public:
749
750
  }
750
751
 
751
752
  virtual ~BaseServer() {
752
- P_ASSERT_EQ(serverState, FINISHED_SHUTDOWN);
753
+ if (serverState != FINISHED_SHUTDOWN) {
754
+ P_CRITICAL("BUG: server state is not FINISHED_SHUTDOWN");
755
+ }
753
756
  }
754
757
 
755
758
 
@@ -782,6 +785,7 @@ public:
782
785
  assert(nEndpoints < SERVER_KIT_MAX_SERVER_ENDPOINTS);
783
786
  int flag = 1;
784
787
  setNonBlocking(fd);
788
+ if (!fdIsUnixDomainSocket(fd)) {
785
789
  if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int)) == -1
786
790
  && errno != ENOPROTOOPT
787
791
  && errno != ENOTSUP
@@ -791,6 +795,7 @@ public:
791
795
  SKS_WARN("Cannot disable Nagle's algorithm on a TCP socket: " <<
792
796
  strerror(e) << " (errno=" << e << ")");
793
797
  }
798
+ }
794
799
  ev_io_init(&endpoints[nEndpoints], _onAcceptable, fd, EV_READ);
795
800
  endpoints[nEndpoints].data = this;
796
801
  ev_io_start(ctx->libev->getLoop(), &endpoints[nEndpoints]);
@@ -952,27 +957,7 @@ public:
952
957
  }
953
958
 
954
959
  bool clientOnUnixDomainSocket(Client *client) {
955
- union {
956
- struct sockaddr genericAddress;
957
- struct sockaddr_un unixAddress;
958
- struct sockaddr_in inetAddress;
959
- } addr;
960
- socklen_t len = sizeof(addr);
961
- int ret;
962
-
963
- do {
964
- ret = getsockname(client->getFd(), &addr.genericAddress, &len);
965
- } while (ret == -1 && errno == EINTR);
966
- if (ret == -1) {
967
- int e = errno;
968
- throw SystemException("Unable to autodetect socket type (getsockname() failed)", e);
969
- } else {
970
- #ifdef AF_UNIX
971
- return addr.genericAddress.sa_family == AF_UNIX;
972
- #else
973
- return addr.genericAddress.sa_family == AF_LOCAL;
974
- #endif
975
- }
960
+ return fdIsUnixDomainSocket(client->getFd());
976
961
  }
977
962
 
978
963
  /** Increase client reference count. */
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2013-2025 Asynchronous B.V.
3
+ * Copyright (c) 2013-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2013-2025 Asynchronous B.V.
3
+ * Copyright (c) 2013-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2018-2025 Asynchronous B.V.
3
+ * Copyright (c) 2018-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2025 Asynchronous B.V.
3
+ * Copyright (c) 2014-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2018-2025 Asynchronous B.V.
3
+ * Copyright (c) 2018-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2018-2025 Asynchronous B.V.
3
+ * Copyright (c) 2018-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2012-2025 Asynchronous B.V.
3
+ * Copyright (c) 2012-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2015-2025 Asynchronous B.V.
3
+ * Copyright (c) 2015-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2013-2025 Asynchronous B.V.
3
+ * Copyright (c) 2013-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2015-2025 Asynchronous B.V.
3
+ * Copyright (c) 2015-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2012-2025 Asynchronous B.V.
3
+ * Copyright (c) 2012-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2025 Asynchronous B.V.
3
+ * Copyright (c) 2011-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2012-2025 Asynchronous B.V.
3
+ * Copyright (c) 2012-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2015-2025 Asynchronous B.V.
3
+ * Copyright (c) 2015-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2010-2025 Asynchronous B.V.
3
+ * Copyright (c) 2010-2026 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
6
  * trademarks of Asynchronous B.V.
@@ -0,0 +1,67 @@
1
+ /*
2
+ * Phusion Passenger - https://www.phusionpassenger.com/
3
+ * Copyright (c) 2026 Asynchronous B.V.
4
+ *
5
+ * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
+ * trademarks of Asynchronous B.V.
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ * of this software and associated documentation files (the "Software"), to
10
+ * deal in the Software without restriction, including without limitation the
11
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12
+ * sell copies of the Software, and to permit persons to whom the Software is
13
+ * furnished to do so, subject to the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be included in
16
+ * all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24
+ * IN THE SOFTWARE.
25
+ */
26
+ #ifndef _PASSENGER_SOCKETUTILS_H_
27
+ #define _PASSENGER_SOCKETUTILS_H_
28
+
29
+ #include <Utils/Socket.h>
30
+ #include <IOTools/IOUtils.h>
31
+
32
+ #include <netinet/in.h>
33
+ #include <sys/un.h>
34
+
35
+ namespace Passenger {
36
+
37
+ using namespace std;
38
+ using namespace oxt;
39
+
40
+ bool fdIsUnixDomainSocket(int fd) {
41
+ union {
42
+ struct sockaddr genericAddress;
43
+ struct sockaddr_un unixAddress;
44
+ struct sockaddr_in inetAddress;
45
+ struct sockaddr_in6 inetAddress6;
46
+ } addr;
47
+ socklen_t len = sizeof(addr);
48
+ int ret;
49
+
50
+ do {
51
+ ret = getsockname(fd, &addr.genericAddress, &len);
52
+ } while (ret == -1 && errno == EINTR);
53
+ if (ret == -1) {
54
+ int e = errno;
55
+ throw SystemException("Unable to autodetect socket type (getsockname() failed)", e);
56
+ } else {
57
+ #ifdef AF_UNIX
58
+ return addr.genericAddress.sa_family == AF_UNIX;
59
+ #else
60
+ return addr.genericAddress.sa_family == AF_LOCAL;
61
+ #endif
62
+ }
63
+ }
64
+
65
+ } // namespace Passenger
66
+
67
+ #endif /* _PASSENGER_SOCKETUTILS_H_ */