Router: allowed empty configurations.

Now it's possible to delete "listeners" and "applications" objects.

This closes #187 issue on GitHub.
This commit is contained in:
Valentin Bartenev
2019-08-06 17:13:13 +03:00
parent 7fd9444728
commit 274260bd28

View File

@@ -1432,14 +1432,11 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
tmcf->router_conf->threads = nxt_ncpu;
}
applications = nxt_conf_get_path(conf, &applications_path);
if (applications == NULL) {
nxt_alert(task, "no \"applications\" block");
return NXT_ERROR;
}
router = tmcf->router_conf->router;
applications = nxt_conf_get_path(conf, &applications_path);
if (applications != NULL) {
next = 0;
for ( ;; ) {
@@ -1460,7 +1457,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
nxt_memzero(app, sizeof(nxt_app_t));
app->name.start = nxt_pointer_to(app, sizeof(nxt_app_t));
app->conf.start = nxt_pointer_to(app, sizeof(nxt_app_t) + name.length);
app->conf.start = nxt_pointer_to(app, sizeof(nxt_app_t)
+ name.length);
p = nxt_conf_json_print(app->conf.start, application, NULL);
app->conf.length = p - app->conf.start;
@@ -1540,7 +1538,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
nxt_debug(task, "application type: %V", &apcf.type);
nxt_debug(task, "application processes: %D", apcf.processes);
nxt_debug(task, "application request timeout: %M", apcf.timeout);
nxt_debug(task, "application reschedule timeout: %M", apcf.res_timeout);
nxt_debug(task, "application reschedule timeout: %M",
apcf.res_timeout);
nxt_debug(task, "application requests: %D", apcf.requests);
lang = nxt_app_lang_module(task->thread->runtime, &apcf.type);
@@ -1604,6 +1603,7 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
app_joint->free_app_work.task = &engine->task;
app_joint->free_app_work.obj = app_joint;
}
}
routes_conf = nxt_conf_get_path(conf, &routes_path);
if (nxt_fast_path(routes_conf != NULL)) {
@@ -1623,11 +1623,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
#endif
listeners = nxt_conf_get_path(conf, &listeners_path);
if (listeners == NULL) {
nxt_alert(task, "no \"listeners\" block");
return NXT_ERROR;
}
if (listeners != NULL) {
next = 0;
for ( ;; ) {
@@ -1644,7 +1641,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
nxt_memzero(&lscf, sizeof(lscf));
ret = nxt_conf_map_object(mp, listener, nxt_router_listener_conf,
nxt_nitems(nxt_router_listener_conf), &lscf);
nxt_nitems(nxt_router_listener_conf),
&lscf);
if (ret != NXT_OK) {
nxt_alert(task, "listener map error");
goto fail;
@@ -1665,7 +1663,8 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
if (http != NULL) {
ret = nxt_conf_map_object(mp, http, nxt_router_http_conf,
nxt_nitems(nxt_router_http_conf), skcf);
nxt_nitems(nxt_router_http_conf),
skcf);
if (ret != NXT_OK) {
nxt_alert(task, "http map error");
goto fail;
@@ -1673,7 +1672,6 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
}
#if (NXT_TLS)
value = nxt_conf_get_path(listener, &certificate_path);
if (value != NULL) {
@@ -1689,7 +1687,6 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
nxt_queue_insert_tail(&tmcf->tls, &tls->link);
}
#endif
skcf->listen->handler = nxt_http_conn_init;
@@ -1705,6 +1702,7 @@ nxt_router_conf_create(nxt_task_t *task, nxt_router_temp_conf_t *tmcf,
&lscf.application);
}
}
}
value = nxt_conf_get_path(conf, &access_log_path);