passenger 6.1.7 → 6.2.0

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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +29 -2
  3. data/CONTRIBUTING.md +3 -3
  4. data/README.md +1 -1
  5. data/build/cxx_tests.rb +3 -0
  6. data/build/support/cxx_dependency_map.rb +1486 -665
  7. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +2 -0
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +2 -0
  9. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +2 -0
  10. data/dev/index_cxx_dependencies.rb +1 -1
  11. data/dev/runner +2 -0
  12. data/doc/DeveloperQuickstart.md +1 -1
  13. data/src/README.md +1 -1
  14. data/src/agent/Core/Config.h +1 -1
  15. data/src/agent/Core/Controller/Config.h +1 -1
  16. data/src/agent/Shared/ApiServerUtils.h +14 -9
  17. data/src/agent/Watchdog/{AgentWatcher.cpp → AgentWatcher.h} +28 -1
  18. data/src/agent/Watchdog/ApiServer.h +28 -5
  19. data/src/agent/Watchdog/Config.h +1 -1
  20. data/src/agent/Watchdog/{CoreWatcher.cpp → CoreWatcher.h} +18 -1
  21. data/src/agent/Watchdog/{InstanceDirToucher.cpp → InstanceDirToucher.h} +20 -1
  22. data/src/agent/Watchdog/WatchdogMain.cpp +11 -77
  23. data/src/agent/Watchdog/WorkingObjects.h +108 -0
  24. data/src/cxx_supportlib/Constants.h +1 -1
  25. data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -17
  26. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +3 -0
  27. data/src/cxx_supportlib/ServerKit/Server.h +4 -21
  28. data/src/cxx_supportlib/Utils/Socket.cpp +67 -0
  29. data/src/cxx_supportlib/Utils/Socket.h +35 -0
  30. data/src/helper-scripts/meteor-loader.rb +3 -0
  31. data/src/helper-scripts/rack-loader.rb +3 -0
  32. data/src/helper-scripts/rack-preloader.rb +3 -0
  33. data/src/nginx_module/ContentHandler.c +13 -1
  34. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -0
  35. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +2 -0
  36. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -0
  37. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +2 -0
  38. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +6 -0
  39. data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
  40. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -0
  41. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -0
  42. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -0
  43. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -0
  44. data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -0
  45. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -0
  46. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +2 -0
  47. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -0
  48. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +2 -0
  49. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +2 -0
  50. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -0
  51. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +2 -0
  52. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +4 -0
  53. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -0
  54. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -0
  55. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -0
  56. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -0
  57. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +2 -0
  58. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -0
  59. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -0
  60. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +4 -0
  61. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -0
  62. data/src/ruby_supportlib/phusion_passenger/constants.rb +4 -0
  63. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -0
  64. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +2 -0
  65. data/src/ruby_supportlib/phusion_passenger/packaging.rb +3 -0
  66. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -0
  67. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -0
  68. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +2 -0
  69. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +2 -0
  70. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +1 -0
  71. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +2 -0
  72. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +2 -0
  73. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck.rb +4 -0
  74. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +2 -0
  75. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -0
  76. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +2 -0
  77. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +2 -0
  78. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +2 -0
  79. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +2 -0
  80. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -0
  81. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -0
  82. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +1 -0
  83. data/src/ruby_supportlib/phusion_passenger/public_api.rb +2 -0
  84. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +6 -0
  85. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -0
  86. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +6 -0
  87. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +12 -0
  88. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -0
  89. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +4 -0
  90. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +2 -0
  91. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -0
  92. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +4 -0
  93. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +4 -0
  94. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +4 -0
  95. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -0
  96. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +6 -0
  97. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +6 -0
  98. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +2 -0
  99. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +2 -0
  100. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +2 -0
  101. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -0
  102. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +4 -0
  103. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +4 -0
  104. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -0
  105. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -0
  106. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +4 -0
  107. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -0
  108. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +4 -0
  109. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +2 -0
  110. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +2 -0
  111. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -0
  112. data/src/ruby_supportlib/phusion_passenger/utils/tmpio.rb +2 -0
  113. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +2 -0
  114. data/src/ruby_supportlib/phusion_passenger/utils.rb +2 -0
  115. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +2 -0
  116. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +2 -0
  117. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +2 -0
  118. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +2 -0
  119. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +4 -0
  120. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +2 -0
  121. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +2 -0
  122. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +2 -0
  123. data/src/ruby_supportlib/phusion_passenger.rb +7 -5
  124. metadata +9 -6
@@ -60,6 +60,7 @@
60
60
  #include <ConfigKit/ConfigKit.h>
61
61
  #include <Algorithms/MovingAverage.h>
62
62
  #include <Utils.h>
63
+ #include <Utils/Socket.h>
63
64
  #include <Utils/ScopeGuard.h>
64
65
  #include <StrIntTools/StrIntUtils.h>
65
66
  #include <IOTools/IOUtils.h>
@@ -782,6 +783,7 @@ public:
782
783
  assert(nEndpoints < SERVER_KIT_MAX_SERVER_ENDPOINTS);
783
784
  int flag = 1;
784
785
  setNonBlocking(fd);
786
+ if (!fdIsUnixDomainSocket(fd)) {
785
787
  if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int)) == -1
786
788
  && errno != ENOPROTOOPT
787
789
  && errno != ENOTSUP
@@ -791,6 +793,7 @@ public:
791
793
  SKS_WARN("Cannot disable Nagle's algorithm on a TCP socket: " <<
792
794
  strerror(e) << " (errno=" << e << ")");
793
795
  }
796
+ }
794
797
  ev_io_init(&endpoints[nEndpoints], _onAcceptable, fd, EV_READ);
795
798
  endpoints[nEndpoints].data = this;
796
799
  ev_io_start(ctx->libev->getLoop(), &endpoints[nEndpoints]);
@@ -952,27 +955,7 @@ public:
952
955
  }
953
956
 
954
957
  bool clientOnUnixDomainSocket(Client *client) {
955
- union {
956
- struct sockaddr genericAddress;
957
- struct sockaddr_un unixAddress;
958
- struct sockaddr_in inetAddress;
959
- } addr;
960
- socklen_t len = sizeof(addr);
961
- int ret;
962
-
963
- do {
964
- ret = getsockname(client->getFd(), &addr.genericAddress, &len);
965
- } while (ret == -1 && errno == EINTR);
966
- if (ret == -1) {
967
- int e = errno;
968
- throw SystemException("Unable to autodetect socket type (getsockname() failed)", e);
969
- } else {
970
- #ifdef AF_UNIX
971
- return addr.genericAddress.sa_family == AF_UNIX;
972
- #else
973
- return addr.genericAddress.sa_family == AF_LOCAL;
974
- #endif
975
- }
958
+ return fdIsUnixDomainSocket(client->getFd());
976
959
  }
977
960
 
978
961
  /** Increase client reference count. */
@@ -0,0 +1,67 @@
1
+ /*
2
+ * Phusion Passenger - https://www.phusionpassenger.com/
3
+ * Copyright (c) 2026 Asynchronous B.V.
4
+ *
5
+ * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
+ * trademarks of Asynchronous B.V.
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ * of this software and associated documentation files (the "Software"), to
10
+ * deal in the Software without restriction, including without limitation the
11
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12
+ * sell copies of the Software, and to permit persons to whom the Software is
13
+ * furnished to do so, subject to the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be included in
16
+ * all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24
+ * IN THE SOFTWARE.
25
+ */
26
+ #ifndef _PASSENGER_SOCKETUTILS_H_
27
+ #define _PASSENGER_SOCKETUTILS_H_
28
+
29
+ #include <Utils/Socket.h>
30
+ #include <IOTools/IOUtils.h>
31
+
32
+ #include <netinet/in.h>
33
+ #include <sys/un.h>
34
+
35
+ namespace Passenger {
36
+
37
+ using namespace std;
38
+ using namespace oxt;
39
+
40
+ bool fdIsUnixDomainSocket(int fd) {
41
+ union {
42
+ struct sockaddr genericAddress;
43
+ struct sockaddr_un unixAddress;
44
+ struct sockaddr_in inetAddress;
45
+ struct sockaddr_in6 inetAddress6;
46
+ } addr;
47
+ socklen_t len = sizeof(addr);
48
+ int ret;
49
+
50
+ do {
51
+ ret = getsockname(fd, &addr.genericAddress, &len);
52
+ } while (ret == -1 && errno == EINTR);
53
+ if (ret == -1) {
54
+ int e = errno;
55
+ throw SystemException("Unable to autodetect socket type (getsockname() failed)", e);
56
+ } else {
57
+ #ifdef AF_UNIX
58
+ return addr.genericAddress.sa_family == AF_UNIX;
59
+ #else
60
+ return addr.genericAddress.sa_family == AF_LOCAL;
61
+ #endif
62
+ }
63
+ }
64
+
65
+ } // namespace Passenger
66
+
67
+ #endif /* _PASSENGER_SOCKETUTILS_H_ */
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Phusion Passenger - https://www.phusionpassenger.com/
3
+ * Copyright (c) 2026 Asynchronous B.V.
4
+ *
5
+ * "Passenger", "Phusion Passenger" and "Union Station" are registered
6
+ * trademarks of Asynchronous B.V.
7
+ *
8
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ * of this software and associated documentation files (the "Software"), to deal
10
+ * in the Software without restriction, including without limitation the rights
11
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ * copies of the Software, and to permit persons to whom the Software is
13
+ * furnished to do so, subject to the following conditions:
14
+ *
15
+ * The above copyright notice and this permission notice shall be included in
16
+ * all copies or substantial portions of the Software.
17
+ *
18
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
+ * THE SOFTWARE.
25
+ */
26
+ #ifndef _PASSENGER_SOCKETUTILS_H_
27
+ #define _PASSENGER_SOCKETUTILS_H_
28
+
29
+ namespace Passenger {
30
+
31
+ bool fdIsUnixDomainSocket(int fd);
32
+
33
+ } // namespace Passenger
34
+
35
+ #endif /* _PASSENGER_SOCKETUTILS_H_ */
@@ -30,7 +30,9 @@ require 'thread'
30
30
  require 'logger'
31
31
 
32
32
  module PhusionPassenger
33
+
33
34
  module App
35
+
34
36
  def self.options
35
37
  @@options ||= {}
36
38
  @@options
@@ -254,4 +256,5 @@ module PhusionPassenger
254
256
  end
255
257
 
256
258
  end # module App
259
+
257
260
  end # module PhusionPassenger
@@ -26,7 +26,9 @@
26
26
  # THE SOFTWARE.
27
27
 
28
28
  module PhusionPassenger
29
+
29
30
  module App
31
+
30
32
  def self.options
31
33
  @@options
32
34
  end
@@ -137,4 +139,5 @@ module PhusionPassenger
137
139
  LoaderSharedHelpers.after_handling_requests
138
140
 
139
141
  end # module App
142
+
140
143
  end # module PhusionPassenger
@@ -28,7 +28,9 @@
28
28
  GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=)
29
29
 
30
30
  module PhusionPassenger
31
+
31
32
  module App
33
+
32
34
  def self.options
33
35
  @@options
34
36
  end
@@ -216,4 +218,5 @@ module PhusionPassenger
216
218
  end
217
219
 
218
220
  end # module App
221
+
219
222
  end # module PhusionPassenger
@@ -1304,6 +1304,7 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
1304
1304
  return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1305
1305
  }
1306
1306
 
1307
+ r->http_major = ch - '0';
1307
1308
  state = sw_major_digit;
1308
1309
  break;
1309
1310
 
@@ -1318,6 +1319,11 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
1318
1319
  return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1319
1320
  }
1320
1321
 
1322
+ if (r->http_major > 99) {
1323
+ return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1324
+ }
1325
+
1326
+ r->http_major = r->http_major * 10 + (ch - '0');
1321
1327
  break;
1322
1328
 
1323
1329
  /* the first digit of minor HTTP version */
@@ -1326,6 +1332,7 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
1326
1332
  return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1327
1333
  }
1328
1334
 
1335
+ r->http_minor = ch - '0';
1329
1336
  state = sw_minor_digit;
1330
1337
  break;
1331
1338
 
@@ -1340,6 +1347,11 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
1340
1347
  return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1341
1348
  }
1342
1349
 
1350
+ if (r->http_minor > 99) {
1351
+ return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1352
+ }
1353
+
1354
+ r->http_minor = r->http_minor * 10 + (ch - '0');
1343
1355
  break;
1344
1356
 
1345
1357
  /* HTTP status code */
@@ -1352,7 +1364,7 @@ parse_status_line(ngx_http_request_t *r, passenger_context_t *context)
1352
1364
  return NGX_HTTP_SCGI_PARSE_NO_HEADER;
1353
1365
  }
1354
1366
 
1355
- context->status = context->status * 10 + ch - '0';
1367
+ context->status = context->status * 10 + (ch - '0');
1356
1368
 
1357
1369
  if (++context->status_count == 3) {
1358
1370
  state = sw_space_after_status;
@@ -30,6 +30,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
30
30
  PhusionPassenger.require_passenger_lib 'utils/json'
31
31
 
32
32
  module PhusionPassenger
33
+
33
34
  module AdminTools
34
35
 
35
36
  class Instance
@@ -240,4 +241,5 @@ module PhusionPassenger
240
241
  end
241
242
 
242
243
  end # module AdminTools
244
+
243
245
  end # module PhusionPassenger
@@ -28,6 +28,7 @@ require 'fileutils'
28
28
  PhusionPassenger.require_passenger_lib 'admin_tools/instance'
29
29
 
30
30
  module PhusionPassenger
31
+
31
32
  module AdminTools
32
33
 
33
34
  class InstanceRegistry
@@ -130,4 +131,5 @@ module PhusionPassenger
130
131
  end
131
132
 
132
133
  end # module AdminTools
134
+
133
135
  end # module PhusionPassenger
@@ -28,6 +28,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/apache'
28
28
  PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
29
29
 
30
30
  module PhusionPassenger
31
+
31
32
  module AdminTools
32
33
 
33
34
  class MemoryStats
@@ -310,4 +311,5 @@ module PhusionPassenger
310
311
  end
311
312
 
312
313
  end # module AdminTools
314
+
313
315
  end # module PhusionPassenger
@@ -25,6 +25,7 @@
25
25
  module PhusionPassenger
26
26
 
27
27
  module AdminTools
28
+
28
29
  def self.tmpdir
29
30
  [ "PASSENGER_INSTANCE_REGISTRY_DIR", "TMPDIR" ].each do |name|
30
31
  if ENV.has_key?(name) && !ENV[name].empty?
@@ -44,6 +45,7 @@ module PhusionPassenger
44
45
  true
45
46
  end
46
47
  end
48
+
47
49
  end # module AdminTools
48
50
 
49
51
  end # module PhusionPassenger
@@ -23,8 +23,11 @@
23
23
  # THE SOFTWARE.
24
24
 
25
25
  module PhusionPassenger
26
+
26
27
  module Apache2
28
+
27
29
  module ConfigUtils
30
+
28
31
  class << self
29
32
  def initialize!(options)
30
33
  sort(options)
@@ -47,6 +50,9 @@ module PhusionPassenger
47
50
  end
48
51
  end
49
52
  end
53
+
50
54
  end
55
+
51
56
  end
57
+
52
58
  end # module PhusionPassenger
@@ -295,6 +295,9 @@ COMMON_LIBRARY = CommonLibraryBuilder.new do
295
295
  define_component 'Utils/SystemTime.o',
296
296
  source: 'SystemTools/SystemTime.cpp',
297
297
  category: :base
298
+ define_component 'Utils/Socket.o',
299
+ source: 'Utils/Socket.cpp',
300
+ category: :base
298
301
  define_component 'StrIntTools/StrIntUtils.o',
299
302
  source: 'StrIntTools/StrIntUtils.cpp',
300
303
  category: :base,
@@ -26,6 +26,7 @@ PhusionPassenger.require_passenger_lib 'constants'
26
26
  PhusionPassenger.require_passenger_lib 'config/command'
27
27
 
28
28
  module PhusionPassenger
29
+
29
30
  module Config
30
31
 
31
32
  class AboutCommand < Command
@@ -228,4 +229,5 @@ module PhusionPassenger
228
229
  end
229
230
 
230
231
  end # module Config
232
+
231
233
  end # module PhusionPassenger
@@ -35,6 +35,7 @@ PhusionPassenger.require_passenger_lib 'utils/progress_bar'
35
35
  PhusionPassenger.require_passenger_lib 'utils/tmpio'
36
36
 
37
37
  module PhusionPassenger
38
+
38
39
  module Config
39
40
 
40
41
  class AgentCompiler < AbstractInstaller
@@ -169,4 +170,5 @@ module PhusionPassenger
169
170
  end
170
171
 
171
172
  end # module Standalone
173
+
172
174
  end # module PhusionPassenger
@@ -32,6 +32,7 @@ PhusionPassenger.require_passenger_lib 'config/utils'
32
32
  PhusionPassenger.require_passenger_lib 'utils/json'
33
33
 
34
34
  module PhusionPassenger
35
+
35
36
  module Config
36
37
 
37
38
  class ApiCallCommand < Command
@@ -216,4 +217,5 @@ module PhusionPassenger
216
217
  end
217
218
 
218
219
  end # module Config
220
+
219
221
  end # module PhusionPassenger
@@ -27,6 +27,7 @@ PhusionPassenger.require_passenger_lib 'constants'
27
27
  PhusionPassenger.require_passenger_lib 'config/command'
28
28
 
29
29
  module PhusionPassenger
30
+
30
31
  module Config
31
32
 
32
33
  class BuildNativeSupportCommand < Command
@@ -76,4 +77,5 @@ module PhusionPassenger
76
77
  end
77
78
 
78
79
  end # module Config
80
+
79
81
  end # module PhusionPassenger
@@ -23,6 +23,7 @@
23
23
  # THE SOFTWARE.
24
24
 
25
25
  module PhusionPassenger
26
+
26
27
  module Config
27
28
 
28
29
  class Command
@@ -61,4 +62,5 @@ module PhusionPassenger
61
62
  end
62
63
 
63
64
  end # module Config
65
+
64
66
  end # module PhusionPassenger
@@ -29,6 +29,7 @@ PhusionPassenger.require_passenger_lib 'config/agent_compiler'
29
29
  PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
30
30
 
31
31
  module PhusionPassenger
32
+
32
33
  module Config
33
34
 
34
35
  class CompileAgentCommand < Command
@@ -100,4 +101,5 @@ module PhusionPassenger
100
101
  end
101
102
 
102
103
  end # module Config
104
+
103
105
  end # module PhusionPassenger
@@ -29,6 +29,7 @@ PhusionPassenger.require_passenger_lib 'config/nginx_engine_compiler'
29
29
  PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
30
30
 
31
31
  module PhusionPassenger
32
+
32
33
  module Config
33
34
 
34
35
  class CompileNginxEngineCommand < Command
@@ -129,4 +130,5 @@ module PhusionPassenger
129
130
  end
130
131
 
131
132
  end # module Config
133
+
132
134
  end # module PhusionPassenger
@@ -32,6 +32,7 @@ PhusionPassenger.require_passenger_lib 'config/utils'
32
32
  PhusionPassenger.require_passenger_lib 'utils/json'
33
33
 
34
34
  module PhusionPassenger
35
+
35
36
  module Config
36
37
 
37
38
  class DetachProcessCommand < Command
@@ -115,4 +116,5 @@ module PhusionPassenger
115
116
  end
116
117
 
117
118
  end # module Config
119
+
118
120
  end # module PhusionPassenger
@@ -35,6 +35,7 @@ PhusionPassenger.require_passenger_lib 'utils/shellwords'
35
35
  PhusionPassenger.require_passenger_lib 'utils/tmpio'
36
36
 
37
37
  module PhusionPassenger
38
+
38
39
  module Config
39
40
 
40
41
  class DownloadAgentCommand < Command
@@ -304,4 +305,5 @@ module PhusionPassenger
304
305
  end
305
306
 
306
307
  end # module Config
308
+
307
309
  end # module PhusionPassenger
@@ -35,6 +35,7 @@ PhusionPassenger.require_passenger_lib 'utils/shellwords'
35
35
  PhusionPassenger.require_passenger_lib 'utils/tmpio'
36
36
 
37
37
  module PhusionPassenger
38
+
38
39
  module Config
39
40
 
40
41
  class DownloadNginxEngineCommand < Command
@@ -302,4 +303,5 @@ module PhusionPassenger
302
303
  end
303
304
 
304
305
  end # module Config
306
+
305
307
  end # module PhusionPassenger
@@ -31,6 +31,7 @@ PhusionPassenger.require_passenger_lib 'config/compile_agent_command'
31
31
  PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
32
32
 
33
33
  module PhusionPassenger
34
+
34
35
  module Config
35
36
 
36
37
  class InstallAgentCommand < Command
@@ -186,4 +187,5 @@ module PhusionPassenger
186
187
  end
187
188
 
188
189
  end # module Config
190
+
189
191
  end # module PhusionPassenger
@@ -34,6 +34,7 @@ PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
34
34
  PhusionPassenger.require_passenger_lib 'utils/tmpio'
35
35
 
36
36
  module PhusionPassenger
37
+
37
38
  module Config
38
39
 
39
40
  class InstallStandaloneRuntimeCommand < Command
@@ -288,4 +289,5 @@ module PhusionPassenger
288
289
  end
289
290
 
290
291
  end # module Config
292
+
291
293
  end # module PhusionPassenger
@@ -37,9 +37,11 @@ PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
37
37
  PhusionPassenger.require_passenger_lib 'utils/tmpio'
38
38
 
39
39
  module PhusionPassenger
40
+
40
41
  module Config
41
42
 
42
43
  module InstallationUtils
44
+
43
45
  extend self # Make methods available as class methods.
44
46
 
45
47
  def self.included(klass)
@@ -256,7 +258,9 @@ module PhusionPassenger
256
258
  end
257
259
  puts ConsoleTextTemplate.new({ file: name }, options).result
258
260
  end
261
+
259
262
  end
260
263
 
261
264
  end # module Config
265
+
262
266
  end # module PhusionPassenger
@@ -30,6 +30,7 @@ PhusionPassenger.require_passenger_lib 'config/utils'
30
30
  PhusionPassenger.require_passenger_lib 'utils/json'
31
31
 
32
32
  module PhusionPassenger
33
+
33
34
  module Config
34
35
 
35
36
  class ListInstancesCommand < Command
@@ -100,4 +101,5 @@ module PhusionPassenger
100
101
  end
101
102
 
102
103
  end # module Config
104
+
103
105
  end # module PhusionPassenger
@@ -28,6 +28,7 @@ module PhusionPassenger
28
28
 
29
29
  # Core of the `passenger-config` command. Dispatches a subcommand to a specific class.
30
30
  module Config
31
+
31
32
  KNOWN_COMMANDS = [
32
33
  [ "detach-process", "DetachProcessCommand" ],
33
34
  [ "restart-app", "RestartAppCommand" ],
@@ -179,6 +180,7 @@ module PhusionPassenger
179
180
  PhusionPassenger.require_passenger_lib("config/#{base_name}")
180
181
  PhusionPassenger::Config.const_get(class_name)
181
182
  end
183
+
182
184
  end
183
185
 
184
186
  end # module PhusionPassenger
@@ -40,6 +40,7 @@ PhusionPassenger.require_passenger_lib 'utils/progress_bar'
40
40
  PhusionPassenger.require_passenger_lib 'utils/tmpio'
41
41
 
42
42
  module PhusionPassenger
43
+
43
44
  module Config
44
45
 
45
46
  class NginxEngineCompiler < AbstractInstaller
@@ -408,4 +409,5 @@ module PhusionPassenger
408
409
  end
409
410
 
410
411
  end # module Standalone
412
+
411
413
  end # module PhusionPassenger
@@ -32,6 +32,7 @@ PhusionPassenger.require_passenger_lib 'config/utils'
32
32
  PhusionPassenger.require_passenger_lib 'utils/json'
33
33
 
34
34
  module PhusionPassenger
35
+
35
36
  module Config
36
37
 
37
38
  class ReopenLogsCommand < Command
@@ -142,4 +143,5 @@ module PhusionPassenger
142
143
  end
143
144
 
144
145
  end # module Config
146
+
145
147
  end # module PhusionPassenger
@@ -35,6 +35,7 @@ PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
35
35
  PhusionPassenger.require_passenger_lib 'utils/terminal_choice_menu'
36
36
 
37
37
  module PhusionPassenger
38
+
38
39
  module Config
39
40
 
40
41
  class RestartAppCommand < Command
@@ -278,4 +279,5 @@ module PhusionPassenger
278
279
  end
279
280
 
280
281
  end # module Config
282
+
281
283
  end # module PhusionPassenger
@@ -26,6 +26,7 @@ PhusionPassenger.require_passenger_lib 'constants'
26
26
  PhusionPassenger.require_passenger_lib 'config/command'
27
27
 
28
28
  module PhusionPassenger
29
+
29
30
  module Config
30
31
 
31
32
  class SystemMetricsCommand < Command
@@ -41,4 +42,5 @@ module PhusionPassenger
41
42
  end
42
43
 
43
44
  end # module Config
45
+
44
46
  end # module PhusionPassenger
@@ -33,6 +33,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/networking'
33
33
  PhusionPassenger.require_passenger_lib 'platform_info/linux'
34
34
 
35
35
  module PhusionPassenger
36
+
36
37
  module Config
37
38
 
38
39
  class SystemPropertiesCommand < Command
@@ -102,4 +103,5 @@ module PhusionPassenger
102
103
  end
103
104
 
104
105
  end # module Config
106
+
105
107
  end # module PhusionPassenger
@@ -25,9 +25,11 @@
25
25
  PhusionPassenger.require_passenger_lib 'constants'
26
26
 
27
27
  module PhusionPassenger
28
+
28
29
  module Config
29
30
 
30
31
  module Utils
32
+
31
33
  extend self # Make methods available as class methods.
32
34
 
33
35
  def self.included(klass)
@@ -157,7 +159,9 @@ module PhusionPassenger
157
159
  def is_enterprise?
158
160
  defined?(PhusionPassenger::PASSENGER_IS_ENTERPRISE) && PhusionPassenger::PASSENGER_IS_ENTERPRISE
159
161
  end
162
+
160
163
  end
161
164
 
162
165
  end # module Config
166
+
163
167
  end # module PhusionPassenger