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.
- checksums.yaml +4 -4
- data/CHANGELOG +29 -2
- data/CONTRIBUTING.md +3 -3
- data/README.md +1 -1
- data/build/cxx_tests.rb +3 -0
- data/build/support/cxx_dependency_map.rb +1486 -665
- data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +2 -0
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +2 -0
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +2 -0
- data/dev/index_cxx_dependencies.rb +1 -1
- data/dev/runner +2 -0
- data/doc/DeveloperQuickstart.md +1 -1
- data/src/README.md +1 -1
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Shared/ApiServerUtils.h +14 -9
- data/src/agent/Watchdog/{AgentWatcher.cpp → AgentWatcher.h} +28 -1
- data/src/agent/Watchdog/ApiServer.h +28 -5
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/{CoreWatcher.cpp → CoreWatcher.h} +18 -1
- data/src/agent/Watchdog/{InstanceDirToucher.cpp → InstanceDirToucher.h} +20 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +11 -77
- data/src/agent/Watchdog/WorkingObjects.h +108 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -17
- data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +3 -0
- data/src/cxx_supportlib/ServerKit/Server.h +4 -21
- data/src/cxx_supportlib/Utils/Socket.cpp +67 -0
- data/src/cxx_supportlib/Utils/Socket.h +35 -0
- data/src/helper-scripts/meteor-loader.rb +3 -0
- data/src/helper-scripts/rack-loader.rb +3 -0
- data/src/helper-scripts/rack-preloader.rb +3 -0
- data/src/nginx_module/ContentHandler.c +13 -1
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/utils.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/constants.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/public_api.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +12 -0
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/utils/download.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils/tmpio.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/utils.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +4 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger.rb +7 -5
- 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
|
-
|
|
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
|
|
@@ -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
|