passenger 6.0.24 → 6.0.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (489) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +138 -114
  3. data/LICENSE +1 -1
  4. data/README.md +1 -1
  5. data/Rakefile +2 -2
  6. data/bin/passenger +2 -2
  7. data/bin/passenger-config +2 -2
  8. data/bin/passenger-install-apache2-module +2 -2
  9. data/bin/passenger-install-nginx-module +2 -2
  10. data/bin/passenger-memory-stats +2 -2
  11. data/bin/passenger-status +2 -2
  12. data/build/agent.rb +2 -2
  13. data/build/apache2.rb +2 -2
  14. data/build/basics.rb +2 -2
  15. data/build/common_library.rb +2 -2
  16. data/build/cxx_tests.rb +2 -2
  17. data/build/integration_tests.rb +2 -2
  18. data/build/misc.rb +2 -2
  19. data/build/nginx.rb +2 -2
  20. data/build/node_tests.rb +2 -2
  21. data/build/oxt_tests.rb +2 -2
  22. data/build/packaging.rb +2 -2
  23. data/build/ruby_extension.rb +2 -2
  24. data/build/ruby_tests.rb +2 -2
  25. data/build/schema_printer.rb +2 -2
  26. data/build/support/cplusplus.rb +2 -2
  27. data/build/support/general.rb +2 -2
  28. data/build/support/vendor/cxx_hinted_parser/LICENSE.md +1 -1
  29. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +2 -2
  30. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser.rb +2 -2
  31. data/build/support/vendor/cxxcodebuilder/LICENSE.md +1 -1
  32. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +2 -2
  33. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +2 -2
  34. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder.rb +2 -2
  35. data/build/test_basics.rb +2 -2
  36. data/dev/copy_boost_headers +2 -2
  37. data/dev/nginx_version_sha256 +2 -2
  38. data/doc/DesignAspects/LimitedGemDependencies.md +39 -0
  39. data/doc/DesignAspects/NoGemActivationDuringRubyLoaderInitialization.md +27 -0
  40. data/passenger.gemspec +4 -0
  41. data/resources/templates/apache2/deployment_example.txt.erb +1 -1
  42. data/resources/templates/nginx/deployment_example.txt.erb +1 -1
  43. data/resources/templates/standalone/http.erb +1 -0
  44. data/src/agent/AgentMain.cpp +2 -2
  45. data/src/agent/Core/AdminPanelConnector.h +2 -2
  46. data/src/agent/Core/ApiServer.h +2 -2
  47. data/src/agent/Core/ApplicationPool/AbstractSession.h +2 -2
  48. data/src/agent/Core/ApplicationPool/BasicGroupInfo.h +2 -2
  49. data/src/agent/Core/ApplicationPool/BasicProcessInfo.h +2 -2
  50. data/src/agent/Core/ApplicationPool/Common.h +2 -2
  51. data/src/agent/Core/ApplicationPool/Context.h +7 -4
  52. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +2 -2
  53. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
  54. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +2 -2
  55. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +2 -2
  56. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +2 -2
  57. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +69 -2
  58. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +28 -8
  59. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +2 -2
  60. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +2 -2
  61. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +2 -2
  62. data/src/agent/Core/ApplicationPool/Group.h +6 -5
  63. data/src/agent/Core/ApplicationPool/Implementation.cpp +2 -2
  64. data/src/agent/Core/ApplicationPool/Options.h +3 -4
  65. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +2 -2
  66. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +2 -2
  67. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +2 -2
  68. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +2 -2
  69. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
  70. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +2 -2
  71. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +2 -2
  72. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +2 -2
  73. data/src/agent/Core/ApplicationPool/Pool.h +2 -2
  74. data/src/agent/Core/ApplicationPool/Process.cpp +2 -2
  75. data/src/agent/Core/ApplicationPool/Process.h +2 -2
  76. data/src/agent/Core/ApplicationPool/Session.h +2 -2
  77. data/src/agent/Core/ApplicationPool/Socket.h +2 -2
  78. data/src/agent/Core/ApplicationPool/TestSession.h +2 -2
  79. data/src/agent/Core/Config.h +4 -3
  80. data/src/agent/Core/ConfigChange.cpp +2 -2
  81. data/src/agent/Core/ConfigChange.h +2 -2
  82. data/src/agent/Core/Controller/AppResponse.h +2 -2
  83. data/src/agent/Core/Controller/BufferBody.cpp +2 -2
  84. data/src/agent/Core/Controller/CheckoutSession.cpp +2 -2
  85. data/src/agent/Core/Controller/Client.h +2 -2
  86. data/src/agent/Core/Controller/Config.cpp +2 -2
  87. data/src/agent/Core/Controller/Config.h +9 -4
  88. data/src/agent/Core/Controller/ForwardResponse.cpp +2 -2
  89. data/src/agent/Core/Controller/Hooks.cpp +2 -2
  90. data/src/agent/Core/Controller/Implementation.cpp +2 -2
  91. data/src/agent/Core/Controller/InitRequest.cpp +2 -3
  92. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +2 -2
  93. data/src/agent/Core/Controller/InternalUtils.cpp +2 -2
  94. data/src/agent/Core/Controller/Miscellaneous.cpp +2 -2
  95. data/src/agent/Core/Controller/Request.h +2 -2
  96. data/src/agent/Core/Controller/SendRequest.cpp +2 -2
  97. data/src/agent/Core/Controller/StateInspection.cpp +2 -2
  98. data/src/agent/Core/Controller/TurboCaching.h +2 -2
  99. data/src/agent/Core/Controller.h +2 -2
  100. data/src/agent/Core/CoreMain.cpp +3 -3
  101. data/src/agent/Core/OptionParser.h +7 -2
  102. data/src/agent/Core/ResponseCache.h +2 -2
  103. data/src/agent/Core/SecurityUpdateChecker.h +2 -2
  104. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +2 -2
  105. data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  106. data/src/agent/Core/SpawningKit/Config.h +2 -2
  107. data/src/agent/Core/SpawningKit/Context.h +2 -2
  108. data/src/agent/Core/SpawningKit/DirectSpawner.h +2 -2
  109. data/src/agent/Core/SpawningKit/DummySpawner.h +2 -2
  110. data/src/agent/Core/SpawningKit/ErrorRenderer.h +2 -2
  111. data/src/agent/Core/SpawningKit/Exceptions.h +2 -2
  112. data/src/agent/Core/SpawningKit/Factory.h +2 -2
  113. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
  114. data/src/agent/Core/SpawningKit/Handshake/Perform.h +2 -2
  115. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +2 -2
  116. data/src/agent/Core/SpawningKit/Handshake/Session.h +2 -2
  117. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +2 -2
  118. data/src/agent/Core/SpawningKit/Journey.h +2 -2
  119. data/src/agent/Core/SpawningKit/PipeWatcher.h +2 -2
  120. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h +2 -2
  121. data/src/agent/Core/SpawningKit/Result/AutoGeneratedCode.h.cxxcodebuilder +2 -2
  122. data/src/agent/Core/SpawningKit/Result.h +2 -2
  123. data/src/agent/Core/SpawningKit/SmartSpawner.h +2 -2
  124. data/src/agent/Core/SpawningKit/Spawner.h +2 -2
  125. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +2 -2
  126. data/src/agent/Core/TelemetryCollector.h +2 -2
  127. data/src/agent/ExecHelper/ExecHelperMain.cpp +2 -2
  128. data/src/agent/FileReadHelper/FileReadHelperMain.cpp +2 -2
  129. data/src/agent/MainFunctions.h +2 -2
  130. data/src/agent/Shared/ApiAccountUtils.h +2 -2
  131. data/src/agent/Shared/ApiServerUtils.h +2 -2
  132. data/src/agent/Shared/ApplicationPoolApiKey.h +2 -2
  133. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +2 -2
  134. data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -2
  135. data/src/agent/Shared/Fundamentals/Initialization.cpp +2 -2
  136. data/src/agent/Shared/Fundamentals/Initialization.h +2 -2
  137. data/src/agent/Shared/Fundamentals/Utils.cpp +2 -2
  138. data/src/agent/Shared/Fundamentals/Utils.h +2 -2
  139. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +2 -2
  140. data/src/agent/SystemMetrics/SystemMetricsMain.cpp +2 -2
  141. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +2 -2
  142. data/src/agent/Watchdog/AgentWatcher.cpp +2 -2
  143. data/src/agent/Watchdog/ApiServer.h +2 -2
  144. data/src/agent/Watchdog/Config.h +4 -3
  145. data/src/agent/Watchdog/CoreWatcher.cpp +2 -2
  146. data/src/agent/Watchdog/InstanceDirToucher.cpp +2 -2
  147. data/src/agent/Watchdog/WatchdogMain.cpp +2 -2
  148. data/src/apache2_module/Bucket.cpp +2 -2
  149. data/src/apache2_module/Bucket.h +2 -2
  150. data/src/apache2_module/CBindings.cpp +2 -2
  151. data/src/apache2_module/Config.cpp +2 -2
  152. data/src/apache2_module/Config.h +2 -2
  153. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +7 -2
  154. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp.cxxcodebuilder +2 -2
  155. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +7 -2
  156. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp.cxxcodebuilder +2 -2
  157. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +17 -2
  158. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp.cxxcodebuilder +2 -2
  159. data/src/apache2_module/ConfigGeneral/Common.h +2 -2
  160. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +2 -2
  161. data/src/apache2_module/ConfigGeneral/SetterFuncs.h +2 -2
  162. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +2 -2
  163. data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp.cxxcodebuilder +2 -2
  164. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +2 -2
  165. data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp.cxxcodebuilder +2 -2
  166. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +2 -2
  167. data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  168. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +2 -2
  169. data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp.cxxcodebuilder +2 -2
  170. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +2 -2
  171. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  172. data/src/apache2_module/DirectoryMapper.h +2 -2
  173. data/src/apache2_module/Hooks.cpp +3 -2
  174. data/src/apache2_module/Hooks.h +2 -2
  175. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +11 -2
  176. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp.cxxcodebuilder +2 -2
  177. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +13 -2
  178. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  179. data/src/apache2_module/Utils.h +2 -2
  180. data/src/apache2_module/mod_passenger.c +2 -2
  181. data/src/cxx_supportlib/Algorithms/Hasher.cpp +2 -2
  182. data/src/cxx_supportlib/Algorithms/Hasher.h +2 -2
  183. data/src/cxx_supportlib/Algorithms/MovingAverage.h +2 -8
  184. data/src/cxx_supportlib/AppLocalConfigFileUtils.h +2 -2
  185. data/src/cxx_supportlib/AppTypeDetector/CBindings.cpp +2 -2
  186. data/src/cxx_supportlib/AppTypeDetector/CBindings.h +2 -2
  187. data/src/cxx_supportlib/AppTypeDetector/Detector.h +2 -2
  188. data/src/cxx_supportlib/BackgroundEventLoop.cpp +2 -2
  189. data/src/cxx_supportlib/BackgroundEventLoop.h +2 -2
  190. data/src/cxx_supportlib/ConfigKit/AsyncUtils.h +2 -2
  191. data/src/cxx_supportlib/ConfigKit/Common.h +2 -2
  192. data/src/cxx_supportlib/ConfigKit/ConfigKit.h +2 -2
  193. data/src/cxx_supportlib/ConfigKit/DummyTranslator.h +2 -2
  194. data/src/cxx_supportlib/ConfigKit/PrefixTranslator.h +2 -2
  195. data/src/cxx_supportlib/ConfigKit/Schema.h +2 -2
  196. data/src/cxx_supportlib/ConfigKit/SchemaUtils.h +2 -2
  197. data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
  198. data/src/cxx_supportlib/ConfigKit/SubComponentUtils.h +2 -2
  199. data/src/cxx_supportlib/ConfigKit/TableTranslator.h +2 -2
  200. data/src/cxx_supportlib/ConfigKit/Translator.h +2 -2
  201. data/src/cxx_supportlib/ConfigKit/Utils.h +2 -2
  202. data/src/cxx_supportlib/Constants.h +3 -3
  203. data/src/cxx_supportlib/Constants.h.cxxcodebuilder +2 -2
  204. data/src/cxx_supportlib/DataStructures/HashMap.h +2 -2
  205. data/src/cxx_supportlib/DataStructures/HashedStaticString.h +2 -2
  206. data/src/cxx_supportlib/DataStructures/LString.cpp +2 -2
  207. data/src/cxx_supportlib/DataStructures/LString.h +2 -2
  208. data/src/cxx_supportlib/DataStructures/StringKeyTable.h +2 -2
  209. data/src/cxx_supportlib/DataStructures/StringMap.h +2 -2
  210. data/src/cxx_supportlib/Exceptions.cpp +2 -2
  211. data/src/cxx_supportlib/Exceptions.h +2 -2
  212. data/src/cxx_supportlib/FileDescriptor.h +2 -2
  213. data/src/cxx_supportlib/FileTools/FileManip.cpp +2 -2
  214. data/src/cxx_supportlib/FileTools/FileManip.h +2 -2
  215. data/src/cxx_supportlib/FileTools/LargeFiles.h +2 -2
  216. data/src/cxx_supportlib/FileTools/PathManip.cpp +2 -2
  217. data/src/cxx_supportlib/FileTools/PathManip.h +2 -2
  218. data/src/cxx_supportlib/FileTools/PathManipCBindings.cpp +2 -2
  219. data/src/cxx_supportlib/FileTools/PathManipCBindings.h +2 -2
  220. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +2 -2
  221. data/src/cxx_supportlib/FileTools/PathSecurityCheck.h +2 -2
  222. data/src/cxx_supportlib/Hooks.h +2 -2
  223. data/src/cxx_supportlib/IOTools/BufferedIO.h +2 -2
  224. data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -2
  225. data/src/cxx_supportlib/IOTools/IOUtils.h +2 -2
  226. data/src/cxx_supportlib/IOTools/MessageIO.h +2 -2
  227. data/src/cxx_supportlib/IOTools/MessageSerialization.h +2 -2
  228. data/src/cxx_supportlib/InstanceDirectory.h +2 -2
  229. data/src/cxx_supportlib/Integrations/LibevJsonUtils.h +2 -2
  230. data/src/cxx_supportlib/JsonTools/Autocast.h +2 -2
  231. data/src/cxx_supportlib/JsonTools/CBindings.cpp +2 -2
  232. data/src/cxx_supportlib/JsonTools/CBindings.h +2 -2
  233. data/src/cxx_supportlib/JsonTools/JsonUtils.h +2 -2
  234. data/src/cxx_supportlib/LoggingKit/Assert.h +2 -2
  235. data/src/cxx_supportlib/LoggingKit/Config.h +2 -2
  236. data/src/cxx_supportlib/LoggingKit/Context.h +2 -2
  237. data/src/cxx_supportlib/LoggingKit/Forward.h +2 -2
  238. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +2 -2
  239. data/src/cxx_supportlib/LoggingKit/Logging.h +2 -2
  240. data/src/cxx_supportlib/LoggingKit/LoggingKit.h +2 -2
  241. data/src/cxx_supportlib/LveLoggingDecorator.h +2 -2
  242. data/src/cxx_supportlib/MemoryKit/mbuf.cpp +2 -2
  243. data/src/cxx_supportlib/MemoryKit/mbuf.h +2 -2
  244. data/src/cxx_supportlib/MemoryKit/palloc.cpp +1 -1
  245. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -1
  246. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +2 -2
  247. data/src/cxx_supportlib/ProcessManagement/Ruby.h +2 -2
  248. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +2 -2
  249. data/src/cxx_supportlib/ProcessManagement/Spawn.h +2 -2
  250. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +2 -2
  251. data/src/cxx_supportlib/ProcessManagement/Utils.h +2 -2
  252. data/src/cxx_supportlib/RandomGenerator.h +2 -2
  253. data/src/cxx_supportlib/ResourceLocator.h +2 -2
  254. data/src/cxx_supportlib/SafeLibev.h +2 -2
  255. data/src/cxx_supportlib/SecurityKit/Crypto.cpp +2 -2
  256. data/src/cxx_supportlib/SecurityKit/Crypto.h +2 -2
  257. data/src/cxx_supportlib/SecurityKit/MemZeroGuard.h +2 -2
  258. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +2 -2
  259. data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
  260. data/src/cxx_supportlib/ServerKit/Client.h +2 -2
  261. data/src/cxx_supportlib/ServerKit/ClientRef.h +2 -2
  262. data/src/cxx_supportlib/ServerKit/Config.h +2 -2
  263. data/src/cxx_supportlib/ServerKit/Context.h +2 -2
  264. data/src/cxx_supportlib/ServerKit/CookieUtils.h +2 -2
  265. data/src/cxx_supportlib/ServerKit/Errors.h +2 -2
  266. data/src/cxx_supportlib/ServerKit/FdSinkChannel.h +2 -2
  267. data/src/cxx_supportlib/ServerKit/FdSourceChannel.h +2 -2
  268. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +2 -2
  269. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
  270. data/src/cxx_supportlib/ServerKit/HeaderTable.h +2 -2
  271. data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
  272. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +2 -2
  273. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParserState.h +2 -2
  274. data/src/cxx_supportlib/ServerKit/HttpClient.h +2 -2
  275. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +21 -23
  276. data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +2 -2
  277. data/src/cxx_supportlib/ServerKit/HttpRequest.h +2 -2
  278. data/src/cxx_supportlib/ServerKit/HttpRequestRef.h +2 -2
  279. data/src/cxx_supportlib/ServerKit/HttpServer.h +2 -2
  280. data/src/cxx_supportlib/ServerKit/Implementation.cpp +2 -2
  281. data/src/cxx_supportlib/ServerKit/Server.h +2 -2
  282. data/src/cxx_supportlib/StaticString.h +2 -2
  283. data/src/cxx_supportlib/StrIntTools/DateParsing.h +2 -2
  284. data/src/cxx_supportlib/StrIntTools/StrIntUtils.cpp +2 -2
  285. data/src/cxx_supportlib/StrIntTools/StrIntUtils.h +2 -2
  286. data/src/cxx_supportlib/StrIntTools/StrIntUtilsNoStrictAliasing.cpp +2 -2
  287. data/src/cxx_supportlib/StrIntTools/StringScanning.h +2 -2
  288. data/src/cxx_supportlib/StrIntTools/Template.h +2 -2
  289. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +2 -2
  290. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +2 -2
  291. data/src/cxx_supportlib/SystemTools/SystemMetricsCollector.h +2 -2
  292. data/src/cxx_supportlib/SystemTools/SystemTime.cpp +2 -2
  293. data/src/cxx_supportlib/SystemTools/SystemTime.h +2 -2
  294. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +2 -2
  295. data/src/cxx_supportlib/SystemTools/UserDatabase.h +2 -2
  296. data/src/cxx_supportlib/Utils/AnsiColorConstants.h +2 -2
  297. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -2
  298. data/src/cxx_supportlib/Utils/BlockingQueue.h +2 -2
  299. data/src/cxx_supportlib/Utils/CachedFileStat.cpp +2 -2
  300. data/src/cxx_supportlib/Utils/CachedFileStat.h +2 -2
  301. data/src/cxx_supportlib/Utils/CachedFileStat.hpp +2 -2
  302. data/src/cxx_supportlib/Utils/ClassUtils.h +2 -2
  303. data/src/cxx_supportlib/Utils/Curl.h +2 -2
  304. data/src/cxx_supportlib/Utils/FastStringStream.h +2 -2
  305. data/src/cxx_supportlib/Utils/FileChangeChecker.h +2 -2
  306. data/src/cxx_supportlib/Utils/HttpConstants.h +2 -2
  307. data/src/cxx_supportlib/Utils/IniFile.h +2 -2
  308. data/src/cxx_supportlib/Utils/MessagePassing.h +2 -2
  309. data/src/cxx_supportlib/Utils/OptionParsing.h +2 -2
  310. data/src/cxx_supportlib/Utils/ReleaseableScopedPointer.h +2 -2
  311. data/src/cxx_supportlib/Utils/ScopeGuard.h +2 -2
  312. data/src/cxx_supportlib/Utils/SpeedMeter.h +2 -2
  313. data/src/cxx_supportlib/Utils/Timer.h +2 -2
  314. data/src/cxx_supportlib/Utils/VariantMap.h +2 -2
  315. data/src/cxx_supportlib/Utils.cpp +2 -2
  316. data/src/cxx_supportlib/Utils.h +2 -2
  317. data/src/cxx_supportlib/WatchdogLauncher.cpp +2 -2
  318. data/src/cxx_supportlib/WatchdogLauncher.h +3 -5
  319. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +2 -2
  320. data/src/cxx_supportlib/WrapperRegistry/CBindings.cpp +2 -2
  321. data/src/cxx_supportlib/WrapperRegistry/CBindings.h +2 -2
  322. data/src/cxx_supportlib/WrapperRegistry/Entry.h +2 -2
  323. data/src/cxx_supportlib/WrapperRegistry/Registry.h +2 -2
  324. data/src/cxx_supportlib/oxt/backtrace.hpp +1 -1
  325. data/src/cxx_supportlib/oxt/detail/backtrace_disabled.hpp +1 -1
  326. data/src/cxx_supportlib/oxt/detail/backtrace_enabled.hpp +1 -1
  327. data/src/cxx_supportlib/oxt/detail/context.hpp +1 -1
  328. data/src/cxx_supportlib/oxt/detail/spin_lock_darwin.hpp +1 -1
  329. data/src/cxx_supportlib/oxt/detail/spin_lock_gcc_x86.hpp +1 -1
  330. data/src/cxx_supportlib/oxt/detail/spin_lock_portable.hpp +1 -1
  331. data/src/cxx_supportlib/oxt/detail/spin_lock_pthreads.hpp +1 -1
  332. data/src/cxx_supportlib/oxt/detail/tracable_exception_disabled.hpp +1 -1
  333. data/src/cxx_supportlib/oxt/detail/tracable_exception_enabled.hpp +1 -1
  334. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +1 -1
  335. data/src/cxx_supportlib/oxt/implementation.cpp +1 -1
  336. data/src/cxx_supportlib/oxt/initialize.hpp +1 -1
  337. data/src/cxx_supportlib/oxt/macros.hpp +1 -1
  338. data/src/cxx_supportlib/oxt/spin_lock.hpp +1 -1
  339. data/src/cxx_supportlib/oxt/system_calls.cpp +1 -1
  340. data/src/cxx_supportlib/oxt/system_calls.hpp +1 -1
  341. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  342. data/src/cxx_supportlib/oxt/tracable_exception.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-copy/adhoc_lve.h +2 -2
  344. data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +2 -2
  345. data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
  346. data/src/helper-scripts/crash-watch.rb +1 -1
  347. data/src/helper-scripts/download_binaries/extconf.rb +2 -2
  348. data/src/helper-scripts/meteor-loader.rb +9 -4
  349. data/src/helper-scripts/node-loader.js +2 -2
  350. data/src/helper-scripts/prespawn +2 -2
  351. data/src/helper-scripts/rack-loader.rb +2 -2
  352. data/src/helper-scripts/rack-preloader.rb +2 -2
  353. data/src/helper-scripts/wsgi-loader.py +2 -2
  354. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +10 -2
  355. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c.cxxcodebuilder +2 -2
  356. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +8 -2
  357. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c.cxxcodebuilder +2 -2
  358. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +14 -2
  359. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c.cxxcodebuilder +2 -2
  360. data/src/nginx_module/Configuration.c +1 -1
  361. data/src/nginx_module/Configuration.h +1 -1
  362. data/src/nginx_module/ContentHandler.c +1 -1
  363. data/src/nginx_module/ContentHandler.h +1 -1
  364. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +2 -2
  365. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  366. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +2 -2
  367. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c.cxxcodebuilder +2 -2
  368. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +2 -2
  369. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  370. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +2 -2
  371. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c.cxxcodebuilder +2 -2
  372. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +2 -2
  373. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  374. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +7 -2
  375. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c.cxxcodebuilder +2 -2
  376. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +13 -2
  377. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c.cxxcodebuilder +2 -2
  378. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +6 -2
  379. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -2
  380. data/src/nginx_module/StaticContentHandler.c +1 -1
  381. data/src/nginx_module/StaticContentHandler.h +1 -1
  382. data/src/nginx_module/ngx_http_passenger_module.c +2 -2
  383. data/src/nginx_module/ngx_http_passenger_module.h +1 -1
  384. data/src/nodejs_supportlib/phusion_passenger/line_reader.js +2 -2
  385. data/src/ruby_native_extension/extconf.rb +2 -2
  386. data/src/ruby_native_extension/passenger_native_support.c +2 -2
  387. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +2 -2
  388. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -2
  389. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +2 -2
  390. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -2
  391. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +2 -2
  392. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +9 -2
  393. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +2 -2
  394. data/src/ruby_supportlib/phusion_passenger/common_library.rb +2 -2
  395. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -2
  396. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -2
  397. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -2
  398. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -2
  399. data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -2
  400. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -2
  401. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +2 -2
  402. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -2
  403. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +2 -2
  404. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +2 -2
  405. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -2
  406. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +2 -2
  407. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +2 -2
  408. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -2
  409. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -2
  410. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  411. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -2
  412. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +2 -2
  413. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -2
  414. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -2
  415. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +2 -2
  416. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -2
  417. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +2 -2
  418. data/src/ruby_supportlib/phusion_passenger/constants.rb +2 -2
  419. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
  420. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +12 -4
  421. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +2 -2
  422. data/src/ruby_supportlib/phusion_passenger/message_client.rb +2 -2
  423. data/src/ruby_supportlib/phusion_passenger/native_support.rb +2 -2
  424. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +10 -2
  425. data/src/ruby_supportlib/phusion_passenger/packaging.rb +2 -2
  426. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  427. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -2
  428. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +2 -2
  429. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +2 -2
  430. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +2 -2
  431. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +2 -2
  432. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +2 -2
  433. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +2 -2
  434. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -2
  435. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +2 -2
  436. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +2 -2
  437. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +2 -2
  438. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +2 -2
  439. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
  440. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -2
  441. data/src/ruby_supportlib/phusion_passenger/plugin.rb +2 -2
  442. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +14 -8
  443. data/src/ruby_supportlib/phusion_passenger/public_api.rb +2 -2
  444. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +2 -2
  445. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -2
  446. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +2 -2
  447. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +2 -2
  448. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
  449. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
  450. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +2 -2
  451. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +2 -2
  452. data/src/ruby_supportlib/phusion_passenger/simple_benchmarking.rb +2 -2
  453. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +2 -2
  454. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -2
  455. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +14 -3
  456. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -2
  457. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +2 -2
  458. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -2
  459. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +5 -3
  460. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +3 -3
  461. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +2 -2
  462. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +3 -4
  463. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +9 -3
  464. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -2
  465. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +2 -2
  466. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +2 -2
  467. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -2
  468. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
  469. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -2
  470. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +2 -2
  471. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +2 -2
  472. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +2 -2
  473. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -2
  474. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +2 -2
  475. data/src/ruby_supportlib/phusion_passenger/utils.rb +2 -2
  476. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -1
  477. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +1 -1
  478. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  479. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +1 -1
  480. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +1 -1
  481. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +1 -1
  482. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +1 -1
  483. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/spawn.rb +1 -1
  484. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +1 -1
  485. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +1 -1
  486. data/src/ruby_supportlib/phusion_passenger.rb +4 -4
  487. data/src/schema_printer/SchemaPrinterMain.cpp +2 -2
  488. data/src/schema_printer/SchemaPrinterMain.cpp.cxxcodebuilder +2 -2
  489. metadata +4 -2
@@ -1,8 +1,8 @@
1
1
  # Phusion Passenger - https://www.phusionpassenger.com/
2
- # Copyright (c) 2010-2017 Phusion Holding B.V.
2
+ # Copyright (c) 2010-2025 Asynchronous B.V.
3
3
  #
4
4
  # "Passenger", "Phusion Passenger" and "Union Station" are registered
5
- # trademarks of Phusion Holding B.V.
5
+ # trademarks of Asynchronous B.V.
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,8 +1,8 @@
1
1
  # Phusion Passenger - https://www.phusionpassenger.com/
2
- # Copyright (c) 2010-2017 Phusion Holding B.V.
2
+ # Copyright (c) 2010-2025 Asynchronous B.V.
3
3
  #
4
4
  # "Passenger", "Phusion Passenger" and "Union Station" are registered
5
- # trademarks of Phusion Holding B.V.
5
+ # trademarks of Asynchronous B.V.
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,8 +1,8 @@
1
1
  # Phusion Passenger - https://www.phusionpassenger.com/
2
- # Copyright (c) 2010-2017 Phusion Holding B.V.
2
+ # Copyright (c) 2010-2025 Asynchronous B.V.
3
3
  #
4
4
  # "Passenger", "Phusion Passenger" and "Union Station" are registered
5
- # trademarks of Phusion Holding B.V.
5
+ # trademarks of Asynchronous B.V.
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,4 +1,4 @@
1
- Copyright (c) 2016 Phusion Holding B.V.
1
+ Copyright (c) 2016-2025 Asynchronous B.V.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -1,8 +1,8 @@
1
1
  # encoding: binary
2
2
 
3
- # Copyright (c) 2016 Phusion Holding B.V.
3
+ # Copyright (c) 2016-2025 Asynchronous B.V.
4
4
  #
5
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
5
+ # "Union Station" and "Passenger" are trademarks of Asynchronous B.V.
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
- # Copyright (c) 2016 Phusion Holding B.V.
1
+ # Copyright (c) 2016-2025 Asynchronous B.V.
2
2
  #
3
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
3
+ # "Union Station" and "Passenger" are trademarks of Asynchronous B.V.
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,4 +1,4 @@
1
- Copyright (c) 2016 Phusion Holding B.V.
1
+ Copyright (c) 2016-2025 Asynchronous B.V.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -1,8 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
- # Copyright (c) 2016-2018 Phusion Holding B.V.
3
+ # Copyright (c) 2016-2025 Asynchronous B.V.
4
4
  #
5
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
5
+ # "Union Station" and "Passenger" are trademarks of Asynchronous B.V.
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,8 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
- # Copyright (c) 2016 Phusion Holding B.V.
3
+ # Copyright (c) 2016-2025 Asynchronous B.V.
4
4
  #
5
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
5
+ # "Union Station" and "Passenger" are trademarks of Asynchronous B.V.
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,6 +1,6 @@
1
- # Copyright (c) 2016 Phusion Holding B.V.
1
+ # Copyright (c) 2016-2025 Asynchronous B.V.
2
2
  #
3
- # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
3
+ # "Union Station" and "Passenger" are trademarks of Asynchronous B.V.
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  # of this software and associated documentation files (the "Software"), to deal
data/build/test_basics.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # Phusion Passenger - https://www.phusionpassenger.com/
2
- # Copyright (c) 2010-2017 Phusion Holding B.V.
2
+ # Copyright (c) 2010-2025 Asynchronous B.V.
3
3
  #
4
4
  # "Passenger", "Phusion Passenger" and "Union Station" are registered
5
- # trademarks of Phusion Holding B.V.
5
+ # trademarks of Asynchronous B.V.
6
6
  #
7
7
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Phusion Passenger - https://www.phusionpassenger.com/
3
- # Copyright (c) 2010-2017 Phusion Holding B.V.
3
+ # Copyright (c) 2010-2025 Asynchronous B.V.
4
4
  #
5
5
  # "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- # trademarks of Phusion Holding B.V.
6
+ # trademarks of Asynchronous B.V.
7
7
  #
8
8
  # Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Phusion Passenger - https://www.phusionpassenger.com/
3
- # Copyright (c) 2024 Phusion Holding B.V.
3
+ # Copyright (c) 2024-2025 Asynchronous B.V.
4
4
  #
5
5
  # "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- # trademarks of Phusion Holding B.V.
6
+ # trademarks of Asynchronous B.V.
7
7
  #
8
8
  # Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  # of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,39 @@
1
+ # Limited gem dependencies
2
+
3
+ ## Context
4
+
5
+ - We provide native packages (APT/YUM) for Passenger.
6
+ - Passenger has a bunch of tools (e.g. `bin/passenger-status`, `helper-scripts/backtrace-sanitizer.rb`, `helper-scripts/prespawn`) that are written in Ruby. When Passenger is natively packaged, we ensure that these tools run in the "system" Ruby.
7
+ - On Debian-based systems, the OS package repositories may supply multiple Ruby versions. So our native packaging can't assume a single Ruby version.
8
+
9
+ This raises the question of how to deal with Passenger's own gem dependencies. An analysis of possible strategies and their implications/tradeoffs:
10
+
11
+ 1. If the OS package repositories supply dependent gems, then our native packages can depend on those directly.
12
+
13
+ Drawbacks:
14
+
15
+ - Limited selection of gems.
16
+
17
+ 2. We package the gem dependencies ourselves. In addition, any dependency with native extensions must be packaged separately, once for each Ruby version installable through the native OS package repositories.
18
+
19
+ Drawbacks:
20
+
21
+ - More work for us.
22
+
23
+ 3. We vendor the gem dependencies within the native packages. In addition, any dependency with native extensions must be vendored separately, once for each Ruby version installable through the native OS package repositories.
24
+
25
+ ## Decision
26
+
27
+ We pick strategy 1.
28
+
29
+ ## Consequences
30
+
31
+ - Any gems that the written-in-Ruby tools depend on, must either be available through OS repositories, or must be a Ruby standard library gem.
32
+ - All such dependencies must be specified in the Passenger gemspec.
33
+ - Development-related Passenger Ruby code can depend on any gem, since they're not included in native packages.
34
+ - All such dependencies must be specified in the Passenger Gemfile.
35
+
36
+ ## See also
37
+
38
+ - [No gem activation during Ruby loader initialization](NoGemActivationDuringRubyLoaderInitialization.md)
39
+ - System Ruby runner (only used in Debian packages): `packaging/debian/debian_specs/passenger/passenger_system_ruby.c.erb`
@@ -0,0 +1,27 @@
1
+ # No gem activation during Ruby loader initialization
2
+
3
+ ## Context
4
+
5
+ Passenger loads a Ruby app using loader scripts (rack-loader.rb and rack-preloader.rb). These scripts perform these steps:
6
+
7
+ 1. Initialization, e.g., to setup communication with the Passenger Core.
8
+ 2. Activate Bundler.
9
+ 3. Load the application (config.ru).
10
+
11
+ If step 1 activates any gems, then that may conflict with Bundler activation because Gemfile could specify a different gem version.
12
+
13
+ ## Decision
14
+
15
+ All code callable by the Ruby loaders' initialization steps, must not activate any gems.
16
+
17
+ ## Consequences
18
+
19
+ Any needed functionality that's typically provided by gems, must be reimplemented within the `PhusionPassenger` module.
20
+
21
+ For example, the initialization step needs to parse JSON. Instead of activating the JSON gem, we reimplement a JSON parser in `PhusionPassenger::Utils::JSON`.
22
+
23
+ ### Caveat: standard library gems
24
+
25
+ More and more parts of the Ruby standard library are becoming [gemified](https://stdgems.org/). This increases the chances of the initialization step activating a standard library gem. In principle, our strategy remains the same: we reimplement those libraries. For example, we reimplemented StringScanner (needed by our JSON implementation) in `PhusionPassenger::Utils::StringScanner`, but we limited its scope to just the functionality needed by the JSON implementation.
26
+
27
+ If the standard library in question is a native extension (e.g., `etc`), then the strategy is to reimplement it in C++ as part of the [Passenger Agent binary](../../src/agent/README.md), as a separately callable tool. The Ruby code then spawns the written-in-C++ tool and parses its output.
data/passenger.gemspec CHANGED
@@ -23,9 +23,13 @@ Gem::Specification.new do |s|
23
23
  "mailing_list_uri" => "https://www.phusionpassenger.com/contact",
24
24
  "wiki_uri" => "https://github.com/phusion/passenger/wiki"
25
25
  }
26
+
27
+ # Limit dependencies only to those available through OS package repositories.
28
+ # See doc/DesignAspects/LimitedGemDependencies.md
26
29
  s.add_dependency 'rake', '>= 12.3.3'
27
30
  s.add_dependency 'rack', '>= 1.6.13'
28
31
  s.add_dependency 'rackup', '>= 2.0.0'
32
+
29
33
  s.files = Dir[*PhusionPassenger::Packaging::GLOB] -
30
34
  Dir[*PhusionPassenger::Packaging::EXCLUDE_GLOB]
31
35
  s.executables = PhusionPassenger::Packaging::USER_EXECUTABLES +
@@ -8,4 +8,4 @@ guide:
8
8
  Enjoy Phusion Passenger, a product of Phusion® (<b><%= @phusion_website %></b>) :-)
9
9
  <b><%= @passenger_website %></b>
10
10
 
11
- Passenger® is a registered trademark of Phusion Holding B.V.
11
+ Passenger® is a registered trademark of Asynchronous B.V.
@@ -8,4 +8,4 @@ guide:
8
8
  Enjoy Phusion Passenger, a product of Phusion (<b><%= @phusion_website %></b>) :-)
9
9
  <b><%= @passenger_website %></b>
10
10
 
11
- Passenger® is a registered trademark of Phusion Holding B.V.
11
+ Passenger® is a registered trademark of Asynchronous B.V.
@@ -32,6 +32,7 @@ passenger_user_switching off;
32
32
  <%= nginx_http_option(:pool_idle_time) %>
33
33
  <%= nginx_http_option(:max_preloader_idle_time) %>
34
34
  <%= nginx_http_option(:turbocaching) %>
35
+ <%= nginx_http_option(:old_routing) %>
35
36
  <%= nginx_http_option(:instance_registry_dir) %>
36
37
  <%= nginx_http_option(:spawn_dir) %>
37
38
  <%= nginx_http_option(:disable_security_update_check) %>
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2014-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2017-2018 Phusion Holding B.V.
3
+ * Copyright (c) 2017-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2013-2018 Phusion Holding B.V.
3
+ * Copyright (c) 2013-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2016-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2016-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2014-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2018 Phusion Holding B.V.
3
+ * Copyright (c) 2014-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2018 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2014-2018 Phusion Holding B.V.
3
+ * Copyright (c) 2014-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -61,6 +61,8 @@ public:
61
61
  boost::object_pool<Process> processObjectPool;
62
62
  mutable boost::mutex agentConfigSyncher;
63
63
 
64
+ // Whether to use the old routing algorithm
65
+ bool oldRouting;
64
66
 
65
67
  /****** Dependencies ******/
66
68
 
@@ -68,9 +70,10 @@ public:
68
70
  Json::Value agentConfig;
69
71
 
70
72
 
71
- Context()
73
+ Context(bool _oldRouting)
72
74
  : sessionObjectPool(64, 1024),
73
- processObjectPool(4, 64)
75
+ processObjectPool(4, 64),
76
+ oldRouting(_oldRouting)
74
77
  { }
75
78
 
76
79
  void finalize() {
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2018 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2018 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -63,6 +63,73 @@ Group::findProcessWithStickySessionId(unsigned int id) const {
63
63
  return NULL;
64
64
  }
65
65
 
66
+ Process *
67
+ Group::findProcessWithStickySessionIdOrLowestBusyness(unsigned int id) const {
68
+ int leastBusyProcessIndex = -1;
69
+ int lowestBusyness = 0;
70
+ unsigned int i, size = enabledProcessBusynessLevels.size();
71
+ const int *enabledProcessBusynessLevels = &this->enabledProcessBusynessLevels[0];
72
+ for (i = 0; i < size; i++) {
73
+ Process *process = enabledProcesses[i].get();
74
+ if (process->getStickySessionId() == id) {
75
+ return process;
76
+ } else if (leastBusyProcessIndex == -1 || enabledProcessBusynessLevels[i] < lowestBusyness) {
77
+ leastBusyProcessIndex = i;
78
+ lowestBusyness = enabledProcessBusynessLevels[i];
79
+ }
80
+ }
81
+
82
+ if (leastBusyProcessIndex == -1) {
83
+ return NULL;
84
+ } else {
85
+ return enabledProcesses[leastBusyProcessIndex].get();
86
+ }
87
+ }
88
+
89
+ Process *
90
+ Group::findProcessWithLowestBusyness(const ProcessList &processes) const {
91
+ if (processes.empty()) {
92
+ return NULL;
93
+ }
94
+
95
+ int lowestBusyness = -1;
96
+ Process *leastBusyProcess = NULL;
97
+ ProcessList::const_iterator it;
98
+ ProcessList::const_iterator end = processes.end();
99
+ for (it = processes.begin(); it != end; it++) {
100
+ Process *process = (*it).get();
101
+ int busyness = process->busyness();
102
+ if (lowestBusyness == -1 || lowestBusyness > busyness) {
103
+ lowestBusyness = busyness;
104
+ leastBusyProcess = process;
105
+ }
106
+ }
107
+ return leastBusyProcess;
108
+ }
109
+
110
+ /**
111
+ * Cache-optimized version of findProcessWithLowestBusyness() for the common case.
112
+ */
113
+ Process *
114
+ Group::findEnabledProcessWithLowestBusyness() const {
115
+ if (enabledProcesses.empty()) {
116
+ return NULL;
117
+ }
118
+
119
+ int leastBusyProcessIndex = -1;
120
+ int lowestBusyness = 0;
121
+ unsigned int i, size = enabledProcessBusynessLevels.size();
122
+ const int *enabledProcessBusynessLevels = &this->enabledProcessBusynessLevels[0];
123
+
124
+ for (i = 0; i < size; i++) {
125
+ if (leastBusyProcessIndex == -1 || enabledProcessBusynessLevels[i] < lowestBusyness) {
126
+ leastBusyProcessIndex = i;
127
+ lowestBusyness = enabledProcessBusynessLevels[i];
128
+ }
129
+ }
130
+ return enabledProcesses[leastBusyProcessIndex].get();
131
+ }
132
+
66
133
  /**
67
134
  * Return the process with the given sticky session ID if it exists.
68
135
  * If not, then find the "best" enabled process to route a request to,
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -30,7 +30,6 @@
30
30
  #include <Core/ApplicationPool/Pool.h>
31
31
  #endif
32
32
  #include <Core/ApplicationPool/Group.h>
33
- #include <cassert>
34
33
 
35
34
  /*************************************************************************
36
35
  *
@@ -63,9 +62,14 @@ using namespace boost;
63
62
  */
64
63
  Group::RouteResult
65
64
  Group::route(const Options &options) const {
65
+ Process *process = nullptr;
66
66
  if (OXT_LIKELY(enabledCount > 0)) {
67
67
  if (options.stickySessionId == 0) {
68
- Process *process = findBestProcess(enabledProcesses);
68
+ if (OXT_LIKELY(useNewRouting())) {
69
+ process = findBestProcess(enabledProcesses);
70
+ } else {
71
+ process = findEnabledProcessWithLowestBusyness();
72
+ }
69
73
  if (process != nullptr) {
70
74
  assert(process->canBeRoutedTo());
71
75
  return RouteResult(process);
@@ -73,8 +77,11 @@ Group::route(const Options &options) const {
73
77
  return RouteResult(NULL, true);
74
78
  }
75
79
  } else {
76
- Process *process = findBestProcessPreferringStickySessionId(
77
- options.stickySessionId);
80
+ if (OXT_LIKELY(useNewRouting())) {
81
+ process = findBestProcessPreferringStickySessionId(options.stickySessionId);
82
+ }else{
83
+ process = findProcessWithStickySessionIdOrLowestBusyness(options.stickySessionId);
84
+ }
78
85
  if (process != nullptr) {
79
86
  if (process->canBeRoutedTo()) {
80
87
  return RouteResult(process);
@@ -86,7 +93,11 @@ Group::route(const Options &options) const {
86
93
  }
87
94
  }
88
95
  } else {
89
- Process *process = findBestProcess(disablingProcesses);
96
+ if (OXT_LIKELY(useNewRouting())) {
97
+ process = findBestProcess(disablingProcesses);
98
+ } else {
99
+ process = findProcessWithLowestBusyness(disablingProcesses);
100
+ }
90
101
  if (process != nullptr) {
91
102
  assert(process->canBeRoutedTo());
92
103
  return RouteResult(process);
@@ -313,7 +324,12 @@ Group::get(const Options &newOptions, const GetCallback &callback,
313
324
  assert(m_spawning || restarting() || poolAtFullCapacity());
314
325
 
315
326
  if (disablingCount > 0 && !restarting()) {
316
- Process *process = findBestProcess(disablingProcesses);
327
+ Process *process = nullptr;
328
+ if (OXT_LIKELY(useNewRouting())) {
329
+ process = findBestProcess(disablingProcesses);
330
+ } else {
331
+ process = findProcessWithLowestBusyness(disablingProcesses);
332
+ }
317
333
  if (process != nullptr && !process->isTotallyBusy()) {
318
334
  return newSession(process, newOptions.currentTime);
319
335
  }
@@ -341,6 +357,10 @@ Group::get(const Options &newOptions, const GetCallback &callback,
341
357
  }
342
358
  }
343
359
 
360
+ bool
361
+ Group::useNewRouting() const {
362
+ return !pool->context->oldRouting;
363
+ }
344
364
 
345
365
  } // namespace ApplicationPool2
346
366
  } // namespace Passenger
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2017 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal
@@ -1,9 +1,9 @@
1
1
  /*
2
2
  * Phusion Passenger - https://www.phusionpassenger.com/
3
- * Copyright (c) 2011-2018 Phusion Holding B.V.
3
+ * Copyright (c) 2011-2025 Asynchronous B.V.
4
4
  *
5
5
  * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
- * trademarks of Phusion Holding B.V.
6
+ * trademarks of Asynchronous B.V.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  * of this software and associated documentation files (the "Software"), to deal