passenger 6.1.4 → 6.1.6

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +12 -1
  3. data/Rakefile +1 -1
  4. data/build/agent.rb +15 -15
  5. data/build/apache2.rb +18 -18
  6. data/build/basics.rb +1 -1
  7. data/build/common_library.rb +21 -20
  8. data/build/cxx_tests.rb +19 -19
  9. data/build/integration_tests.rb +3 -3
  10. data/build/misc.rb +10 -9
  11. data/build/nginx.rb +12 -12
  12. data/build/oxt_tests.rb +7 -7
  13. data/build/packaging.rb +11 -11
  14. data/build/ruby_extension.rb +3 -3
  15. data/build/ruby_tests.rb +1 -1
  16. data/build/schema_printer.rb +13 -13
  17. data/build/support/cplusplus.rb +8 -8
  18. data/build/support/cxx_dependency_map.rb +622 -622
  19. data/build/support/general.rb +0 -1
  20. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +4 -4
  21. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  22. data/build/test_basics.rb +4 -4
  23. data/dev/colorize-logs +6 -6
  24. data/dev/copy_boost_headers +8 -8
  25. data/dev/index_cxx_dependencies.rb +6 -6
  26. data/dev/install_scripts_bootstrap_code.rb +4 -4
  27. data/dev/list_tests +2 -2
  28. data/dev/nginx_version_sha256 +2 -2
  29. data/dev/parse_file_descriptor_log +1 -1
  30. data/passenger.gemspec +4 -4
  31. data/src/agent/Core/Config.h +1 -1
  32. data/src/agent/Core/Controller/Config.h +1 -1
  33. data/src/agent/Watchdog/Config.h +1 -1
  34. data/src/cxx_supportlib/Constants.h +1 -1
  35. data/src/helper-scripts/backtrace-sanitizer.rb +2 -2
  36. data/src/helper-scripts/download_binaries/extconf.rb +8 -8
  37. data/src/helper-scripts/meteor-loader.rb +39 -39
  38. data/src/helper-scripts/rack-loader.rb +1 -0
  39. data/src/helper-scripts/rack-preloader.rb +2 -1
  40. data/src/ruby_native_extension/extconf.rb +27 -28
  41. data/src/ruby_supportlib/phusion_passenger/abstract_installer.rb +27 -27
  42. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +5 -4
  43. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +9 -8
  44. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +24 -24
  45. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +5 -5
  46. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +526 -526
  47. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +1 -1
  48. data/src/ruby_supportlib/phusion_passenger/common_library.rb +105 -105
  49. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +5 -5
  50. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +7 -6
  51. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +1 -1
  52. data/src/ruby_supportlib/phusion_passenger/config/command.rb +1 -1
  53. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +1 -1
  54. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +5 -5
  55. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +1 -1
  56. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +17 -17
  57. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +18 -18
  58. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +10 -10
  59. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +12 -12
  60. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +24 -23
  61. data/src/ruby_supportlib/phusion_passenger/config/main.rb +26 -26
  62. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +5 -4
  63. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +1 -1
  64. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +4 -4
  65. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +14 -13
  66. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +1 -1
  67. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +34 -33
  68. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +3 -2
  69. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -2
  70. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +35 -36
  71. data/src/ruby_supportlib/phusion_passenger/message_channel.rb +17 -16
  72. data/src/ruby_supportlib/phusion_passenger/message_client.rb +5 -4
  73. data/src/ruby_supportlib/phusion_passenger/native_support.rb +42 -42
  74. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +548 -548
  75. data/src/ruby_supportlib/phusion_passenger/packaging.rb +6 -6
  76. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +85 -84
  77. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +13 -13
  78. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +5 -5
  79. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +65 -65
  80. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +6 -6
  81. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +5 -5
  82. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +10 -10
  83. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck.rb +6 -5
  84. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +7 -7
  85. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/libs.rb +1 -1
  86. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +7 -7
  87. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/utilities.rb +1 -1
  88. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +14 -13
  89. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +27 -26
  90. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +16 -16
  91. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +1 -1
  92. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +29 -28
  93. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -2
  94. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +37 -36
  95. data/src/ruby_supportlib/phusion_passenger/plugin.rb +3 -3
  96. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +16 -15
  97. data/src/ruby_supportlib/phusion_passenger/public_api.rb +1 -1
  98. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +1 -1
  99. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +5 -4
  100. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +8 -7
  101. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +9 -11
  102. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +27 -26
  103. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +6 -5
  104. data/src/ruby_supportlib/phusion_passenger/ruby_core_io_enhancements.rb +7 -6
  105. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +13 -13
  106. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +1 -1
  107. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +351 -351
  108. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +11 -11
  109. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +13 -14
  110. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +21 -23
  111. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +4 -4
  112. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +5 -5
  113. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +6 -6
  114. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +1 -1
  115. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +12 -11
  116. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +9 -9
  117. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +8 -7
  118. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -6
  119. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +4 -4
  120. data/src/ruby_supportlib/phusion_passenger/utils/progress_bar.rb +1 -1
  121. data/src/ruby_supportlib/phusion_passenger/utils/shellwords.rb +1 -1
  122. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +1 -0
  123. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +1 -0
  124. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +13 -12
  125. data/src/ruby_supportlib/phusion_passenger/utils/tmpio.rb +2 -3
  126. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +7 -7
  127. data/src/ruby_supportlib/phusion_passenger/utils.rb +17 -16
  128. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +1 -0
  129. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +3 -2
  130. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +2 -1
  131. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +3 -2
  132. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +13 -13
  133. data/src/ruby_supportlib/phusion_passenger.rb +27 -26
  134. metadata +2 -2
@@ -1,4 +1,5 @@
1
1
  # encoding: binary
2
+
2
3
  # Phusion Passenger - https://www.phusionpassenger.com/
3
4
  # Copyright (c) 2010-2025 Asynchronous B.V.
4
5
  #
@@ -32,7 +33,7 @@ module PhusionPassenger
32
33
  module PlatformInfo
33
34
  private
34
35
  @@cache_dir = nil
35
- @@verbose = ['1', 'true', 'on', 'yes'].include?(ENV['VERBOSE'])
36
+ @@verbose = [ '1', 'true', 'on', 'yes' ].include?(ENV['VERBOSE'])
36
37
  @@log_implementation = lambda do |message|
37
38
  message = reindent(message, 3)
38
39
  message.sub!(/^ /, '')
@@ -72,10 +73,10 @@ module PhusionPassenger
72
73
  metaclass.send(:alias_method, "_unmemoized_#{method}", method)
73
74
  variable_name = "@@memoized_#{method}".sub(/\?/, '')
74
75
  check_variable_name = "@@has_memoized_#{method}".sub(/\?/, '')
75
- eval(%Q{
76
+ eval(%Q(
76
77
  #{variable_name} = nil
77
78
  #{check_variable_name} = false
78
- })
79
+ ))
79
80
  line = __LINE__ + 1
80
81
  source = %Q{
81
82
  def self.#{method}(*args) # def self.httpd(*args)
@@ -131,7 +132,7 @@ module PhusionPassenger
131
132
  return filename
132
133
  end
133
134
  end
134
- return nil
135
+ nil
135
136
  end
136
137
  private_class_method :select_executable
137
138
 
@@ -139,16 +140,16 @@ module PhusionPassenger
139
140
  str = str.dup
140
141
  str.gsub!(/\A([\s\t]*\n)+/, '')
141
142
  str.gsub!(/[\s\t\n]+\Z/, '')
142
- indent = str.split("\n").select{ |line| !line.strip.empty? }.map{ |line| line.index(/[^\s]/) }.compact.min || 0
143
+ indent = str.split("\n").select { |line| !line.strip.empty? }.map { |line| line.index(/[^\s]/) }.compact.min || 0
143
144
  str.gsub!(/^[[:blank:]]{#{indent}}/, '')
144
- return str
145
+ str
145
146
  end
146
147
  private_class_method :unindent
147
148
 
148
149
  def self.reindent(str, level)
149
150
  str = unindent(str)
150
151
  str.gsub!(/^/, ' ' * level)
151
- return str
152
+ str
152
153
  end
153
154
  private_class_method :reindent
154
155
 
@@ -186,7 +187,7 @@ module PhusionPassenger
186
187
  end
187
188
 
188
189
  def self.cache_dir
189
- return @@cache_dir
190
+ @@cache_dir
190
191
  end
191
192
 
192
193
  def self.verbose=(val)
@@ -194,7 +195,7 @@ module PhusionPassenger
194
195
  end
195
196
 
196
197
  def self.verbose?
197
- return @@verbose
198
+ @@verbose
198
199
  end
199
200
 
200
201
  def self.log_implementation=(impl)
@@ -202,29 +203,29 @@ module PhusionPassenger
202
203
  end
203
204
 
204
205
  def self.log_implementation
205
- return @@log_implementation
206
+ @@log_implementation
206
207
  end
207
208
 
208
209
 
209
210
  def self.env_defined?(name)
210
- return !ENV[name].nil? && !ENV[name].empty?
211
+ !ENV[name].nil? && !ENV[name].empty?
211
212
  end
212
213
 
213
214
  def self.string_env(name, default_value = nil)
214
215
  value = ENV[name]
215
216
  if value.nil? || value.empty?
216
- return default_value
217
+ default_value
217
218
  else
218
- return value
219
+ value
219
220
  end
220
221
  end
221
222
 
222
223
  def self.read_file(filename)
223
- return File.open(filename, "rb") do |f|
224
+ File.open(filename, "rb") do |f|
224
225
  f.read
225
226
  end
226
227
  rescue
227
- return ""
228
+ ""
228
229
  end
229
230
 
230
231
  # Clears all memoized values. However, the disk cache (if any is configured)
@@ -240,9 +241,9 @@ module PhusionPassenger
240
241
  def self.tmpdir
241
242
  result = ENV['TMPDIR']
242
243
  if result && !result.empty?
243
- return result.sub(/\/+\Z/, '')
244
+ result.sub(/\/+\Z/, '')
244
245
  else
245
- return '/tmp'
246
+ '/tmp'
246
247
  end
247
248
  end
248
249
  memoize :tmpdir
@@ -266,15 +267,15 @@ module PhusionPassenger
266
267
  if system(filename)
267
268
  return dir
268
269
  else
269
- attempts << { :dir => dir,
270
- :error => "This directory's filesystem is mounted with the 'noexec' option." }
270
+ attempts << { dir: dir,
271
+ error: "This directory's filesystem is mounted with the 'noexec' option." }
271
272
  end
272
273
  rescue Errno::ENOENT
273
- attempts << { :dir => dir, :error => "This directory doesn't exist." }
274
+ attempts << { dir: dir, error: "This directory doesn't exist." }
274
275
  rescue Errno::EACCES
275
- attempts << { :dir => dir, :error => "This program doesn't have permission to write to this directory." }
276
+ attempts << { dir: dir, error: "This program doesn't have permission to write to this directory." }
276
277
  rescue SystemCallError => e
277
- attempts << { :dir => dir, :error => e.message }
278
+ attempts << { dir: dir, error: e.message }
278
279
  ensure
279
280
  File.unlink(filename) rescue nil
280
281
  end
@@ -289,15 +290,15 @@ module PhusionPassenger
289
290
  if system(filename)
290
291
  return dir
291
292
  else
292
- attempts << { :dir => dir,
293
- :error => "This directory's filesystem is mounted with the 'noexec' option." }
293
+ attempts << { dir: dir,
294
+ error: "This directory's filesystem is mounted with the 'noexec' option." }
294
295
  end
295
296
  rescue Errno::ENOENT
296
- attempts << { :dir => dir, :error => "This directory doesn't exist." }
297
+ attempts << { dir: dir, error: "This directory doesn't exist." }
297
298
  rescue Errno::EACCES
298
- attempts << { :dir => dir, :error => "This program doesn't have permission to write to this directory." }
299
+ attempts << { dir: dir, error: "This program doesn't have permission to write to this directory." }
299
300
  rescue SystemCallError => e
300
- attempts << { :dir => dir, :error => e.message }
301
+ attempts << { dir: dir, error: e.message }
301
302
  ensure
302
303
  File.unlink(filename) rescue nil
303
304
  end
@@ -331,9 +332,9 @@ module PhusionPassenger
331
332
 
332
333
  def self.rb_config
333
334
  if defined?(::RbConfig)
334
- return ::RbConfig::CONFIG
335
+ ::RbConfig::CONFIG
335
336
  else
336
- return ::Config::CONFIG
337
+ ::Config::CONFIG
337
338
  end
338
339
  end
339
340
 
@@ -355,9 +356,9 @@ module PhusionPassenger
355
356
  end
356
357
  if name =~ /^\//
357
358
  if File.executable?(name)
358
- return name
359
+ name
359
360
  else
360
- return nil
361
+ nil
361
362
  end
362
363
  else
363
364
  ENV['PATH'].to_s.split(File::PATH_SEPARATOR).each do |directory|
@@ -367,14 +368,14 @@ module PhusionPassenger
367
368
  return path
368
369
  end
369
370
  end
370
- return nil
371
+ nil
371
372
  end
372
373
  end
373
374
 
374
375
  def self.find_all_commands(name)
375
376
  search_dirs = ENV['PATH'].to_s.split(File::PATH_SEPARATOR)
376
- search_dirs.concat(%w(/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin))
377
- ["/opt/*/bin", "/opt/*/sbin", "/usr/local/*/bin", "/usr/local/*/sbin"].each do |glob|
377
+ search_dirs.concat(%w[/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin])
378
+ [ "/opt/*/bin", "/opt/*/sbin", "/usr/local/*/bin", "/usr/local/*/sbin" ].each do |glob|
378
379
  search_dirs.concat(Dir[glob])
379
380
  end
380
381
 
@@ -406,7 +407,7 @@ module PhusionPassenger
406
407
  result << path
407
408
  end
408
409
  end
409
- return result
410
+ result
410
411
  end
411
412
 
412
413
  # Check whether the specified command is in $PATH or in
@@ -416,7 +417,7 @@ module PhusionPassenger
416
417
  def self.find_system_command(name)
417
418
  result = find_command(name)
418
419
  if result.nil?
419
- ['/sbin', '/usr/sbin', '/usr/local/sbin'].each do |dir|
420
+ [ '/sbin', '/usr/sbin', '/usr/local/sbin' ].each do |dir|
420
421
  path = File.join(dir, name)
421
422
  if File.file?(path) && File.executable?(path)
422
423
  return path
@@ -60,7 +60,7 @@ module PhusionPassenger
60
60
  last_result = callback.call(*args, &block)
61
61
  end
62
62
  end
63
- return last_result
63
+ last_result
64
64
  end
65
65
 
66
66
  def self.register(name, klass)
@@ -76,7 +76,7 @@ module PhusionPassenger
76
76
  klass.new(*args, &block)
77
77
  end
78
78
  else
79
- return nil
79
+ nil
80
80
  end
81
81
  end
82
82
 
@@ -89,7 +89,7 @@ module PhusionPassenger
89
89
  end
90
90
  end
91
91
  end
92
- return last_result
92
+ last_result
93
93
  end
94
94
  end
95
95
 
@@ -1,4 +1,5 @@
1
1
  # encoding: binary
2
+
2
3
  # Phusion Passenger - https://www.phusionpassenger.com/
3
4
  # Copyright (c) 2011-2025 Asynchronous B.V.
4
5
  #
@@ -69,8 +70,8 @@ module PhusionPassenger
69
70
  doc = Utils::JSON.parse(line)
70
71
  rescue RuntimeError => e
71
72
  client.write(Utils::JSON.generate(
72
- :result => 'error',
73
- :message => "JSON parse error: #{e}"
73
+ result: 'error',
74
+ message: "JSON parse error: #{e}"
74
75
  ))
75
76
  end
76
77
 
@@ -78,8 +79,8 @@ module PhusionPassenger
78
79
  handle_spawn_command(client, doc, options)
79
80
  else
80
81
  client.write(Utils::JSON.generate(
81
- :result => 'error',
82
- :message => "Unknown command #{doc['command'].inspect}"
82
+ result: 'error',
83
+ message: "Unknown command #{doc['command'].inspect}"
83
84
  ))
84
85
  nil
85
86
  end
@@ -119,13 +120,13 @@ module PhusionPassenger
119
120
  'STEP_PERFORMED', work_dir)
120
121
  LoaderSharedHelpers.run_block_and_record_step_progress('PRELOADER_SEND_RESPONSE', work_dir) do
121
122
  client.write(Utils::JSON.generate(
122
- :result => 'ok',
123
- :pid => Process.pid
123
+ result: 'ok',
124
+ pid: Process.pid
124
125
  ))
125
126
  end
126
127
  LoaderSharedHelpers.record_journey_step_end('PRELOADER_FINISH',
127
128
  'STEP_PERFORMED', work_dir)
128
- [:forked, work_dir]
129
+ [ :forked, work_dir ]
129
130
  rescue Exception => e
130
131
  STDERR.puts("Error: #{e}\n#{e.backtrace.join("\n")}")
131
132
  exit!(1)
@@ -139,14 +140,14 @@ module PhusionPassenger
139
140
 
140
141
  def advertise_sockets(_options, server)
141
142
  json = {
142
- :sockets => [
143
+ sockets: [
143
144
  {
144
- :name => 'main',
145
- :address => "unix:#{server[1]}",
146
- :protocol => 'preloader',
147
- :concurrency => 1
148
- }
149
- ]
145
+ name: 'main',
146
+ address: "unix:#{server[1]}",
147
+ protocol: 'preloader',
148
+ concurrency: 1,
149
+ },
150
+ ],
150
151
  }
151
152
 
152
153
  File.open(ENV['PASSENGER_SPAWN_WORK_DIR'] + '/response/properties.json', 'w') do |f|
@@ -162,7 +163,7 @@ module PhusionPassenger
162
163
  # We call ::select just in case someone overwrites the global select()
163
164
  # function by including ActionView::Helpers in the wrong place.
164
165
  # https://code.google.com/p/phusion-passenger/issues/detail?id=915
165
- ios = Kernel.select([server_socket, STDIN])[0]
166
+ ios = Kernel.select([ server_socket, STDIN ])[0]
166
167
  if ios.include?(server_socket)
167
168
  result, subprocess_work_dir = accept_and_process_next_client(server_socket, options)
168
169
  if result == :forked
@@ -57,7 +57,7 @@ module PhusionPassenger
57
57
 
58
58
  private
59
59
  def callback_list_for_event(name)
60
- return case name
60
+ case name
61
61
  when :starting_worker_process
62
62
  @@event_starting_worker_process
63
63
  when :stopping_worker_process
@@ -45,7 +45,7 @@ module PhusionPassenger
45
45
 
46
46
  private
47
47
  def build_args(options)
48
- args = ['-e', environment]
48
+ args = [ '-e', environment ]
49
49
  args << '-p' << options[:Port].to_s if options[:Port]
50
50
  args << '-a' << options[:Host].to_s if options[:Host]
51
51
  args << '-R' << options[:config].to_s if options[:config]
@@ -1,4 +1,5 @@
1
1
  # encoding: binary
2
+
2
3
  # Phusion Passenger - https://www.phusionpassenger.com/
3
4
  # Copyright (c) 2012-2025 Asynchronous B.V.
4
5
  #
@@ -66,7 +67,7 @@ module PhusionPassenger
66
67
  raise "Unrecognized Out-Of-Band GC strategy #{@strategy.inspect}"
67
68
  end
68
69
 
69
- [status, headers, body]
70
+ [ status, headers, body ]
70
71
  end
71
72
 
72
73
  private
@@ -123,9 +124,9 @@ module PhusionPassenger
123
124
 
124
125
  def initialize_legacy(frequency, logger = nil)
125
126
  initialize_with_options(
126
- :strategy => :counting,
127
- :frequency => frequency,
128
- :logger => logger)
127
+ strategy: :counting,
128
+ frequency: frequency,
129
+ logger: logger)
129
130
  end
130
131
  end
131
132
 
@@ -1,4 +1,5 @@
1
1
  # encoding: binary
2
+
2
3
  # Phusion Passenger - https://www.phusionpassenger.com/
3
4
  # Copyright (c) 2010-2025 Asynchronous B.V.
4
5
  #
@@ -41,7 +42,7 @@ module PhusionPassenger
41
42
  module ThreadHandlerExtension
42
43
  # Constants which exist to relieve Ruby's garbage collector.
43
44
  RACK_VERSION = "rack.version" # :nodoc:
44
- RACK_VERSION_VALUE = [1, 3] # :nodoc:
45
+ RACK_VERSION_VALUE = [ 1, 3 ] # :nodoc:
45
46
  RACK_INPUT = "rack.input" # :nodoc:
46
47
  RACK_ERRORS = "rack.errors" # :nodoc:
47
48
  RACK_MULTITHREAD = "rack.multithread" # :nodoc:
@@ -56,9 +57,9 @@ module PhusionPassenger
56
57
  SCRIPT_NAME = "SCRIPT_NAME" # :nodoc:
57
58
  REQUEST_METHOD = "REQUEST_METHOD" # :nodoc:
58
59
  TRANSFER_ENCODING_HEADER = "Transfer-Encoding" # :nodoc:
59
- TRANSFER_ENCODING_HEADERS = ["Transfer-Encoding", "Transfer-encoding", "transfer-encoding"] # :nodoc:
60
+ TRANSFER_ENCODING_HEADERS = [ "Transfer-Encoding", "Transfer-encoding", "transfer-encoding" ] # :nodoc:
60
61
  CONTENT_LENGTH_HEADER = "Content-Length" # :nodoc:
61
- CONTENT_LENGTH_HEADERS = ["Content-Length", "Content-length", "content-length"] # :nodoc:
62
+ CONTENT_LENGTH_HEADERS = [ "Content-Length", "Content-length", "content-length" ] # :nodoc:
62
63
  X_SENDFILE_HEADER = "X-Sendfile" # :nodoc:
63
64
  X_ACCEL_REDIRECT_HEADER = "X-Accel-Redirect" # :nodoc:
64
65
  CONTENT_LENGTH_HEADER_AND_SEPARATOR = "Content-Length: " # :nodoc
@@ -191,7 +192,7 @@ module PhusionPassenger
191
192
  # can respond to #each.
192
193
  output_body = should_output_body?(status, is_head_request)
193
194
  if body.is_a?(String)
194
- body = [body]
195
+ body = [ body ]
195
196
  elsif body.nil?
196
197
  body = []
197
198
  elsif output_body && body.is_a?(Array)
@@ -342,7 +343,7 @@ module PhusionPassenger
342
343
 
343
344
  def generate_headers_array(status, headers)
344
345
  status_str = status.to_s
345
- result = ["HTTP/1.1 #{status_str} Whatever\r\n"]
346
+ result = [ "HTTP/1.1 #{status_str} Whatever\r\n" ]
346
347
  headers.each do |key, values|
347
348
  if values.is_a?(String)
348
349
  values = values.split(NEWLINE)
@@ -362,7 +363,7 @@ module PhusionPassenger
362
363
  result << CRLF
363
364
  end
364
365
  end
365
- return result
366
+ result
366
367
  end
367
368
 
368
369
  def lookup_header(haystack, needles)
@@ -383,7 +384,7 @@ module PhusionPassenger
383
384
  end
384
385
 
385
386
  def chunk_data(data, size)
386
- [size.to_s(16), CRLF, data, CRLF]
387
+ [ size.to_s(16), CRLF, data, CRLF ]
387
388
  end
388
389
 
389
390
  # Called when body is written out successfully. Indicates that we should
@@ -31,7 +31,6 @@ PhusionPassenger.require_passenger_lib 'utils/unseekable_socket'
31
31
 
32
32
  module PhusionPassenger
33
33
  class RequestHandler
34
-
35
34
  # This class encapsulates the logic of a single RequestHandler thread.
36
35
  class ThreadHandler
37
36
  include DebugLogging
@@ -223,14 +222,14 @@ module PhusionPassenger
223
222
  if @connect_password && headers[PASSENGER_CONNECT_PASSWORD] != @connect_password
224
223
  warn "*** Passenger RequestHandler warning: " <<
225
224
  "someone tried to connect with an invalid connect password."
226
- return
225
+ nil
227
226
  else
228
- return headers
227
+ headers
229
228
  end
230
229
  rescue SecurityError => e
231
230
  warn("*** Passenger RequestHandler warning: " <<
232
231
  "HTTP header size exceeded maximum.")
233
- return
232
+ nil
234
233
  end
235
234
 
236
235
  # Like parse_session_request, but parses an HTTP request. This is a very minimalistic
@@ -274,7 +273,7 @@ module PhusionPassenger
274
273
  headers["REMOTE_PORT"],
275
274
  headers["REMOTE_ADDR"] = connection.to_io.is_a?(TCPSocket) ?
276
275
  connection.to_io.peeraddr(:numeric)[1..2] :
277
- [nil, '127.0.0.1']
276
+ [ nil, '127.0.0.1' ]
278
277
 
279
278
  else
280
279
  header, value = line.split(/\s*:\s*/, 2)
@@ -291,12 +290,12 @@ module PhusionPassenger
291
290
  if @connect_password && headers["HTTP_X_PASSENGER_CONNECT_PASSWORD"] != @connect_password
292
291
  warn "*** Passenger RequestHandler warning: " <<
293
292
  "someone tried to connect with an invalid connect password."
294
- return
293
+ nil
295
294
  else
296
- return headers
295
+ headers
297
296
  end
298
297
  rescue EOFError
299
- return
298
+ nil
300
299
  end
301
300
 
302
301
  def process_ping(env, connection)
@@ -342,13 +341,12 @@ module PhusionPassenger
342
341
 
343
342
  def should_reraise_error?(e)
344
343
  # Stubable by unit tests.
345
- return true
344
+ true
346
345
  end
347
346
 
348
347
  def should_swallow_app_error?(e, socket_wrapper)
349
- return socket_wrapper && socket_wrapper.source_of_exception?(e) && [Errno::EPIPE, Errno::ECONNRESET].any?{|er| e.is_a?(er)}
348
+ socket_wrapper && socket_wrapper.source_of_exception?(e) && [ Errno::EPIPE, Errno::ECONNRESET ].any? { |er| e.is_a?(er) }
350
349
  end
351
350
  end
352
-
353
351
  end # class RequestHandler
354
352
  end # module PhusionPassenger
@@ -1,4 +1,5 @@
1
1
  # encoding: binary
2
+
2
3
  # Phusion Passenger - https://www.phusionpassenger.com/
3
4
  # Copyright (c) 2010-2025 Asynchronous B.V.
4
5
  #
@@ -102,19 +103,19 @@ module PhusionPassenger
102
103
  @main_socket_address, @main_socket = create_tcp_socket(options)
103
104
  end
104
105
  @server_sockets[:main] = {
105
- :address => @main_socket_address,
106
- :socket => @main_socket,
107
- :protocol => @force_http_session ? :http : :session,
108
- :concurrency => @concurrency,
109
- :accept_http_requests => true
106
+ address: @main_socket_address,
107
+ socket: @main_socket,
108
+ protocol: @force_http_session ? :http : :session,
109
+ concurrency: @concurrency,
110
+ accept_http_requests: true,
110
111
  }
111
112
 
112
113
  @http_socket_address, @http_socket = create_tcp_socket(options)
113
114
  @server_sockets[:http] = {
114
- :address => @http_socket_address,
115
- :socket => @http_socket,
116
- :protocol => :http,
117
- :concurrency => 1
115
+ address: @http_socket_address,
116
+ socket: @http_socket,
117
+ protocol: :http,
118
+ concurrency: 1,
118
119
  }
119
120
 
120
121
  @owner_pipe = owner_pipe
@@ -272,7 +273,7 @@ module PhusionPassenger
272
273
  # can easily reactivate the workaround. Or maybe if we just need
273
274
  # TCP sockets for some other reason.
274
275
 
275
- #return RUBY_PLATFORM !~ /darwin/
276
+ # return RUBY_PLATFORM !~ /darwin/
276
277
 
277
278
  ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
278
279
  # Unix domain socket implementation on JRuby
@@ -282,7 +283,7 @@ module PhusionPassenger
282
283
  # It's also bugged in Windows Subsystem for Linux
283
284
  # as of Windows 10, version 1803 (Fall Creators Update)
284
285
  # You will get "Address In Use" errors even if the port is unused.
285
- return !@force_http_session && ruby_engine != "jruby" && !PlatformInfo.windows_subsystem?
286
+ !@force_http_session && ruby_engine != "jruby" && !PlatformInfo.windows_subsystem?
286
287
  end
287
288
 
288
289
  def create_unix_socket_on_filesystem(options)
@@ -308,7 +309,7 @@ module PhusionPassenger
308
309
  socket.sync = true
309
310
  socket.close_on_exec!
310
311
  File.chmod(0600, socket_address)
311
- ["unix:#{socket_address}", socket]
312
+ [ "unix:#{socket_address}", socket ]
312
313
  end
313
314
  end
314
315
 
@@ -323,7 +324,7 @@ module PhusionPassenger
323
324
  socket.sync = true
324
325
  socket.close_on_exec!
325
326
  socket_address = "tcp://#{bind_address}:#{socket.addr[1]}"
326
- return [socket_address, socket]
327
+ [ socket_address, socket ]
327
328
  end
328
329
 
329
330
  # Reset signal handlers to their default handler, and install some
@@ -369,22 +370,22 @@ module PhusionPassenger
369
370
 
370
371
  def start_threads
371
372
  common_options = {
372
- :app => @app,
373
- :app_group_name => @app_group_name,
374
- :connect_password => @connect_password,
375
- :keepalive_enabled => @keepalive
373
+ app: @app,
374
+ app_group_name: @app_group_name,
375
+ connect_password: @connect_password,
376
+ keepalive_enabled: @keepalive,
376
377
  }
377
378
  main_socket_options = common_options.merge(
378
- :server_socket => @main_socket,
379
- :socket_name => "main socket",
380
- :protocol => @server_sockets[:main][:protocol] == :session ?
379
+ server_socket: @main_socket,
380
+ socket_name: "main socket",
381
+ protocol: @server_sockets[:main][:protocol] == :session ?
381
382
  :session :
382
383
  :http
383
384
  )
384
385
  http_socket_options = common_options.merge(
385
- :server_socket => @http_socket,
386
- :socket_name => "HTTP socket",
387
- :protocol => :http
386
+ server_socket: @http_socket,
387
+ socket_name: "HTTP socket",
388
+ protocol: :http
388
389
  )
389
390
 
390
391
  # Used for marking threads that have finished initializing,
@@ -470,7 +471,7 @@ module PhusionPassenger
470
471
  end
471
472
  end
472
473
  begin
473
- ios = select([owner_pipe_watcher[0], @graceful_termination_pipe[0]])[0]
474
+ ios = select([ owner_pipe_watcher[0], @graceful_termination_pipe[0] ])[0]
474
475
  if ios.include?(owner_pipe_watcher[0])
475
476
  trace(2, "Owner pipe closed")
476
477
  else
@@ -483,7 +484,7 @@ module PhusionPassenger
483
484
  owner_pipe_watcher[1].close if !owner_pipe_watcher[1].closed?
484
485
  end
485
486
  else
486
- ios = select([@owner_pipe, @graceful_termination_pipe[0]])[0]
487
+ ios = select([ @owner_pipe, @graceful_termination_pipe[0] ])[0]
487
488
  if ios.include?(@owner_pipe)
488
489
  trace(2, "Owner pipe closed")
489
490
  else
@@ -529,7 +530,7 @@ module PhusionPassenger
529
530
  debug("Error shutting down HTTP thread (#{address}): #{e} (#{e.class})")
530
531
  end
531
532
  end
532
- return threads
533
+ threads
533
534
  end
534
535
 
535
536
  def terminate_threads
@@ -1,4 +1,5 @@
1
1
  # encoding: binary
2
+
2
3
  # Phusion Passenger - https://www.phusionpassenger.com/
3
4
  # Copyright (c) 2010-2025 Asynchronous B.V.
4
5
  #
@@ -55,7 +56,7 @@ class Exception
55
56
  if thread_name = current_thread[:name]
56
57
  thread_name = "(#{thread_name})"
57
58
  end
58
- return "*** Exception #{self.class} #{location}" <<
59
+ "*** Exception #{self.class} #{location}" <<
59
60
  "(#{self}) (process #{$$}, thread #{thread_id}#{thread_name}):\n" <<
60
61
  "\tfrom " << backtrace.join("\n\tfrom ")
61
62
  end
@@ -108,11 +109,11 @@ class File
108
109
  # do that too. This method fixes that by using Dir.logical_pwd.
109
110
  if File.respond_to?(:absolute_path)
110
111
  def self.absolute_logical_path(path, base = Dir.logical_pwd)
111
- return File.absolute_path(path, base)
112
+ File.absolute_path(path, base)
112
113
  end
113
114
  else
114
115
  def self.absolute_logical_path(path, base = Dir.logical_pwd)
115
- return File.expand_path(path, base)
116
+ File.expand_path(path, base)
116
117
  end
117
118
  end
118
119
  end
@@ -152,7 +153,7 @@ module Signal
152
153
  # See https://github.com/phusion/passenger/issues/2489 for details.
153
154
  result.delete("PROF")
154
155
 
155
- return result
156
+ result
156
157
  end
157
158
  end
158
159
 
@@ -161,7 +162,7 @@ module GC
161
162
  # Checks whether the current Ruby interpreter's garbage
162
163
  # collector is copy-on-write friendly.
163
164
  def self.copy_on_write_friendly?
164
- return false
165
+ false
165
166
  end
166
167
  end
167
168
  end