summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_external.c
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2020-08-11 19:19:55 +0300
committerMax Romanov <max.romanov@nginx.com>2020-08-11 19:19:55 +0300
commitec3389b63bd7a9159d2be4a2863140f75095c7d3 (patch)
treef88972c19c713748b56c339dab1bdd60892eaeec /src/nxt_external.c
parent3a721e1d96720505d4d6638e77d2c296d962519c (diff)
downloadunit-ec3389b63bd7a9159d2be4a2863140f75095c7d3.tar.gz
unit-ec3389b63bd7a9159d2be4a2863140f75095c7d3.tar.bz2
Libunit refactoring: port management.
- Changed the port management callbacks to notifications, which e. g. avoids the need to call the libunit function - Added context and library instance reference counts for a safer resource release - Added the router main port initialization
Diffstat (limited to 'src/nxt_external.c')
-rw-r--r--src/nxt_external.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/nxt_external.c b/src/nxt_external.c
index 6370a9c4..2471c812 100644
--- a/src/nxt_external.c
+++ b/src/nxt_external.c
@@ -69,7 +69,7 @@ nxt_external_start(nxt_task_t *task, nxt_process_data_t *data)
nxt_str_t str;
nxt_int_t rc;
nxt_uint_t i, argc;
- nxt_port_t *my_port, *main_port;
+ nxt_port_t *my_port, *main_port, *router_port;
nxt_runtime_t *rt;
nxt_conf_value_t *value;
nxt_common_app_conf_t *conf;
@@ -79,9 +79,12 @@ nxt_external_start(nxt_task_t *task, nxt_process_data_t *data)
conf = data->app;
main_port = rt->port_by_type[NXT_PROCESS_MAIN];
+ router_port = rt->port_by_type[NXT_PROCESS_ROUTER];
my_port = nxt_runtime_port_find(rt, nxt_pid, 0);
- if (nxt_slow_path(main_port == NULL || my_port == NULL)) {
+ if (nxt_slow_path(main_port == NULL || my_port == NULL
+ || router_port == NULL))
+ {
return NXT_ERROR;
}
@@ -90,6 +93,11 @@ nxt_external_start(nxt_task_t *task, nxt_process_data_t *data)
return NXT_ERROR;
}
+ rc = nxt_external_fd_no_cloexec(task, router_port->pair[1]);
+ if (nxt_slow_path(rc != NXT_OK)) {
+ return NXT_ERROR;
+ }
+
rc = nxt_external_fd_no_cloexec(task, my_port->pair[0]);
if (nxt_slow_path(rc != NXT_OK)) {
return NXT_ERROR;
@@ -101,9 +109,11 @@ nxt_external_start(nxt_task_t *task, nxt_process_data_t *data)
"%s;%uD;"
"%PI,%ud,%d;"
"%PI,%ud,%d;"
+ "%PI,%ud,%d;"
"%d,%z,%Z",
NXT_VERSION, my_port->process->stream,
main_port->pid, main_port->id, main_port->pair[1],
+ router_port->pid, router_port->id, router_port->pair[1],
my_port->pid, my_port->id, my_port->pair[0],
2, conf->shm_limit);