2017-05-24 11:57:15 +00:00
|
|
|
|
2020-11-27 18:03:42 +00:00
|
|
|
|
2017-05-24 11:57:15 +00:00
|
|
|
/*
|
2018-03-12 14:03:15 +00:00
|
|
|
* Odyssey.
|
2017-05-24 11:57:15 +00:00
|
|
|
*
|
2018-04-04 13:19:58 +00:00
|
|
|
* Scalable PostgreSQL connection pooler.
|
2020-04-02 11:00:56 +00:00
|
|
|
*/
|
2017-05-24 11:57:15 +00:00
|
|
|
|
2018-08-28 14:43:46 +00:00
|
|
|
#include <kiwi.h>
|
2020-11-25 10:17:15 +00:00
|
|
|
#include <machinarium.h>
|
2018-08-28 14:43:46 +00:00
|
|
|
#include <odyssey.h>
|
2017-05-24 11:57:15 +00:00
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
void od_config_init(od_config_t *config)
|
2017-05-24 11:57:15 +00:00
|
|
|
{
|
2020-12-28 10:43:31 +00:00
|
|
|
config->daemonize = 0;
|
|
|
|
config->priority = 0;
|
|
|
|
config->log_debug = 0;
|
|
|
|
config->log_to_stdout = 1;
|
|
|
|
config->log_config = 0;
|
|
|
|
config->log_session = 1;
|
|
|
|
config->log_query = 0;
|
|
|
|
config->log_file = NULL;
|
|
|
|
config->log_stats = 1;
|
|
|
|
config->stats_interval = 3;
|
|
|
|
config->log_format = NULL;
|
|
|
|
config->pid_file = NULL;
|
|
|
|
config->unix_socket_dir = NULL;
|
|
|
|
config->locks_dir = NULL;
|
2020-07-26 07:58:15 +00:00
|
|
|
config->enable_online_restart_feature = 0;
|
2020-12-28 10:43:31 +00:00
|
|
|
config->bindwith_reuseport = 0;
|
|
|
|
config->graceful_die_on_errors = 0;
|
|
|
|
config->unix_socket_mode = NULL;
|
2021-02-18 22:26:40 +00:00
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
config->log_syslog = 0;
|
|
|
|
config->log_syslog_ident = NULL;
|
|
|
|
config->log_syslog_facility = NULL;
|
2021-02-18 22:26:40 +00:00
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
config->readahead = 8192;
|
|
|
|
config->nodelay = 1;
|
2021-02-18 22:26:40 +00:00
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
config->keepalive = 15;
|
|
|
|
config->keepalive_keep_interval = 5;
|
|
|
|
config->keepalive_probes = 3;
|
|
|
|
config->keepalive_usr_timeout = 0; // use sys default
|
2021-02-18 22:26:40 +00:00
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
config->workers = 1;
|
|
|
|
config->resolvers = 1;
|
|
|
|
config->client_max_set = 0;
|
|
|
|
config->client_max = 0;
|
|
|
|
config->client_max_routing = 0;
|
|
|
|
config->server_login_retry = 1;
|
|
|
|
config->cache_coroutine = 0;
|
|
|
|
config->cache_msg_gc_size = 0;
|
|
|
|
config->coroutine_stack_size = 4;
|
2018-03-06 15:23:52 +00:00
|
|
|
od_list_init(&config->listen);
|
2017-05-24 11:57:15 +00:00
|
|
|
}
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
void od_config_reload(od_config_t *current_config, od_config_t *new_config)
|
2019-10-15 14:15:37 +00:00
|
|
|
{
|
2020-12-28 10:43:31 +00:00
|
|
|
current_config->client_max = new_config->client_max;
|
2019-10-15 14:15:37 +00:00
|
|
|
current_config->client_max_routing = new_config->client_max_routing;
|
2020-01-23 05:30:31 +00:00
|
|
|
current_config->server_login_retry = new_config->server_login_retry;
|
2019-10-15 14:15:37 +00:00
|
|
|
}
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
static void od_config_listen_free(od_config_listen_t *);
|
2017-08-28 13:59:41 +00:00
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
void od_config_free(od_config_t *config)
|
2017-05-24 11:57:15 +00:00
|
|
|
{
|
|
|
|
od_list_t *i, *n;
|
2020-04-02 11:00:56 +00:00
|
|
|
od_list_foreach_safe(&config->listen, i, n)
|
|
|
|
{
|
2018-08-28 14:43:46 +00:00
|
|
|
od_config_listen_t *listen;
|
|
|
|
listen = od_container_of(i, od_config_listen_t, link);
|
|
|
|
od_config_listen_free(listen);
|
2017-08-28 13:59:41 +00:00
|
|
|
}
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->log_file)
|
|
|
|
free(config->log_file);
|
|
|
|
if (config->log_format)
|
|
|
|
free(config->log_format);
|
|
|
|
if (config->pid_file)
|
|
|
|
free(config->pid_file);
|
2018-07-02 15:41:17 +00:00
|
|
|
if (config->unix_socket_dir)
|
|
|
|
free(config->unix_socket_dir);
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->log_syslog_ident)
|
|
|
|
free(config->log_syslog_ident);
|
|
|
|
if (config->log_syslog_facility)
|
|
|
|
free(config->log_syslog_facility);
|
2020-07-26 07:58:15 +00:00
|
|
|
if (config->locks_dir) {
|
|
|
|
free(config->locks_dir);
|
|
|
|
}
|
2017-08-28 13:59:41 +00:00
|
|
|
}
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
od_config_listen_t *od_config_listen_add(od_config_t *config)
|
2017-08-28 13:59:41 +00:00
|
|
|
{
|
2018-08-28 14:43:46 +00:00
|
|
|
od_config_listen_t *listen;
|
2020-04-02 11:00:56 +00:00
|
|
|
listen = (od_config_listen_t *)malloc(sizeof(*listen));
|
2017-08-28 13:59:41 +00:00
|
|
|
if (listen == NULL)
|
|
|
|
return NULL;
|
|
|
|
memset(listen, 0, sizeof(*listen));
|
2020-12-28 10:43:31 +00:00
|
|
|
listen->port = 6432;
|
|
|
|
listen->backlog = 128;
|
2019-12-01 18:21:23 +00:00
|
|
|
listen->client_login_timeout = 15000;
|
2017-08-28 13:59:41 +00:00
|
|
|
od_list_init(&listen->link);
|
2018-03-06 15:23:52 +00:00
|
|
|
od_list_append(&config->listen, &listen->link);
|
2017-08-28 13:59:41 +00:00
|
|
|
return listen;
|
|
|
|
}
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
static void od_config_listen_free(od_config_listen_t *config)
|
2017-08-28 13:59:41 +00:00
|
|
|
{
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->host)
|
|
|
|
free(config->host);
|
|
|
|
if (config->tls)
|
|
|
|
free(config->tls);
|
|
|
|
if (config->tls_ca_file)
|
|
|
|
free(config->tls_ca_file);
|
|
|
|
if (config->tls_key_file)
|
|
|
|
free(config->tls_key_file);
|
|
|
|
if (config->tls_cert_file)
|
|
|
|
free(config->tls_cert_file);
|
|
|
|
if (config->tls_protocols)
|
|
|
|
free(config->tls_protocols);
|
|
|
|
free(config);
|
2017-05-24 11:57:15 +00:00
|
|
|
}
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
int od_config_validate(od_config_t *config, od_logger_t *logger)
|
2017-05-24 11:57:15 +00:00
|
|
|
{
|
2017-08-31 14:14:58 +00:00
|
|
|
/* workers */
|
2018-11-14 13:14:13 +00:00
|
|
|
if (config->workers <= 0) {
|
2017-09-21 13:44:19 +00:00
|
|
|
od_error(logger, "config", NULL, NULL, "bad workers number");
|
2017-08-31 14:14:58 +00:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2018-02-26 14:29:10 +00:00
|
|
|
/* resolvers */
|
2018-11-14 13:14:13 +00:00
|
|
|
if (config->resolvers <= 0) {
|
2018-02-26 14:29:10 +00:00
|
|
|
od_error(logger, "config", NULL, NULL, "bad resolvers number");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2018-06-04 11:51:13 +00:00
|
|
|
/* coroutine_stack_size */
|
2018-06-05 10:02:58 +00:00
|
|
|
if (config->coroutine_stack_size < 4) {
|
2020-12-28 10:43:31 +00:00
|
|
|
od_error(logger, "config", NULL, NULL,
|
|
|
|
"bad coroutine_stack_size number");
|
2018-06-04 11:51:13 +00:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2017-07-27 12:06:59 +00:00
|
|
|
/* log format */
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->log_format == NULL) {
|
2017-09-21 13:44:19 +00:00
|
|
|
od_error(logger, "config", NULL, NULL, "log is not defined");
|
|
|
|
return -1;
|
2017-07-27 12:06:59 +00:00
|
|
|
}
|
|
|
|
|
2018-07-03 13:02:46 +00:00
|
|
|
/* unix_socket_mode */
|
|
|
|
if (config->unix_socket_dir) {
|
|
|
|
if (config->unix_socket_mode == NULL) {
|
2020-12-28 10:43:31 +00:00
|
|
|
od_error(logger, "config", NULL, NULL,
|
|
|
|
"unix_socket_mode is not set");
|
2018-07-03 13:02:46 +00:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-05-24 11:57:15 +00:00
|
|
|
/* listen */
|
2018-03-06 15:23:52 +00:00
|
|
|
if (od_list_empty(&config->listen)) {
|
2020-12-28 10:43:31 +00:00
|
|
|
od_error(logger, "config", NULL, NULL,
|
|
|
|
"no listen servers defined");
|
2017-07-13 12:18:46 +00:00
|
|
|
return -1;
|
|
|
|
}
|
2018-08-28 14:43:46 +00:00
|
|
|
|
2017-08-29 14:43:41 +00:00
|
|
|
od_list_t *i;
|
2018-08-28 14:43:46 +00:00
|
|
|
od_list_foreach(&config->listen, i)
|
|
|
|
{
|
|
|
|
od_config_listen_t *listen;
|
|
|
|
listen = od_container_of(i, od_config_listen_t, link);
|
2017-08-29 14:43:41 +00:00
|
|
|
if (listen->host == NULL) {
|
2018-07-02 15:41:17 +00:00
|
|
|
if (config->unix_socket_dir == NULL) {
|
2020-04-02 11:00:56 +00:00
|
|
|
od_error(
|
2020-12-28 10:43:31 +00:00
|
|
|
logger, "config", NULL, NULL,
|
|
|
|
"listen host is not set and no unix_socket_dir is specified");
|
2018-07-02 15:41:17 +00:00
|
|
|
return -1;
|
|
|
|
}
|
2017-05-24 11:57:15 +00:00
|
|
|
}
|
2018-07-02 15:41:17 +00:00
|
|
|
|
2017-08-29 14:43:41 +00:00
|
|
|
/* tls */
|
|
|
|
if (listen->tls) {
|
|
|
|
if (strcmp(listen->tls, "disable") == 0) {
|
2018-12-06 14:23:15 +00:00
|
|
|
listen->tls_mode = OD_CONFIG_TLS_DISABLE;
|
2020-04-02 11:00:56 +00:00
|
|
|
} else if (strcmp(listen->tls, "allow") == 0) {
|
2018-12-06 14:23:15 +00:00
|
|
|
listen->tls_mode = OD_CONFIG_TLS_ALLOW;
|
2020-04-02 11:00:56 +00:00
|
|
|
} else if (strcmp(listen->tls, "require") == 0) {
|
2018-12-06 14:23:15 +00:00
|
|
|
listen->tls_mode = OD_CONFIG_TLS_REQUIRE;
|
2020-04-02 11:00:56 +00:00
|
|
|
} else if (strcmp(listen->tls, "verify_ca") == 0) {
|
2018-12-06 14:23:15 +00:00
|
|
|
listen->tls_mode = OD_CONFIG_TLS_VERIFY_CA;
|
2020-04-02 11:00:56 +00:00
|
|
|
} else if (strcmp(listen->tls, "verify_full") == 0) {
|
2018-12-06 14:23:15 +00:00
|
|
|
listen->tls_mode = OD_CONFIG_TLS_VERIFY_FULL;
|
2017-08-29 14:43:41 +00:00
|
|
|
} else {
|
2020-12-28 10:43:31 +00:00
|
|
|
od_error(logger, "config", NULL, NULL,
|
|
|
|
"unknown tls mode");
|
2017-08-29 14:43:41 +00:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
2017-05-24 11:57:15 +00:00
|
|
|
}
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
if (config->enable_online_restart_feature &&
|
|
|
|
!config->bindwith_reuseport) {
|
|
|
|
od_dbg_printf_on_dvl_lvl(1, "validation error detected %s\n",
|
|
|
|
"");
|
|
|
|
od_error(
|
|
|
|
logger, "config", NULL, NULL,
|
|
|
|
"online restart feature works only with SO_REUSEPORT. Disable "
|
|
|
|
"online restart or/and enable bindwith_reuseport");
|
2020-07-26 07:58:15 +00:00
|
|
|
return NOT_OK_RESPONSE;
|
|
|
|
}
|
|
|
|
return OK_RESPONSE;
|
|
|
|
|
2017-05-24 11:57:15 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
static inline char *od_config_yes_no(int value)
|
2020-04-02 11:00:56 +00:00
|
|
|
{
|
2017-06-01 09:45:49 +00:00
|
|
|
return value ? "yes" : "no";
|
|
|
|
}
|
|
|
|
|
2020-12-28 10:43:31 +00:00
|
|
|
void od_config_print(od_config_t *config, od_logger_t *logger)
|
2017-05-24 11:57:15 +00:00
|
|
|
{
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "daemonize %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->daemonize));
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "priority %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->priority);
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->pid_file)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"pid_file %s", config->pid_file);
|
2018-07-03 13:02:46 +00:00
|
|
|
if (config->unix_socket_dir) {
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"unix_socket_dir %s", config->unix_socket_dir);
|
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"unix_socket_mode %s", config->unix_socket_mode);
|
2018-07-03 13:02:46 +00:00
|
|
|
}
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->log_format)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"log_format %s", config->log_format);
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->log_file)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"log_file %s", config->log_file);
|
|
|
|
od_log(logger, "config", NULL, NULL, "log_to_stdout %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->log_to_stdout));
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "log_syslog %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->log_syslog));
|
|
|
|
if (config->log_syslog_ident)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"log_syslog_ident %s", config->log_syslog_ident);
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->log_syslog_facility)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
2020-07-26 07:58:15 +00:00
|
|
|
"log_syslog_facility %s",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->log_syslog_facility);
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "log_debug %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->log_debug));
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "log_config %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->log_config));
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "log_session %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->log_session));
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "log_query %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->log_query));
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "log_stats %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->log_stats));
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "stats_interval %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->stats_interval);
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "readahead %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->readahead);
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "nodelay %s",
|
2018-03-06 15:23:52 +00:00
|
|
|
od_config_yes_no(config->nodelay));
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "keepalive %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->keepalive);
|
2018-03-06 15:23:52 +00:00
|
|
|
if (config->client_max_set)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"client_max %d", config->client_max);
|
|
|
|
od_log(logger, "config", NULL, NULL, "client_max_routing %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->client_max_routing);
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "server_login_retry %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->server_login_retry);
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "cache_msg_gc_size %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->cache_msg_gc_size);
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "cache_coroutine %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->cache_coroutine);
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "coroutine_stack_size %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->coroutine_stack_size);
|
2021-01-12 07:06:27 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "workers %d",
|
2020-12-28 10:43:31 +00:00
|
|
|
config->workers);
|
|
|
|
od_log(logger, "config", NULL, NULL, "resolvers %d",
|
2020-04-02 11:00:56 +00:00
|
|
|
config->resolvers);
|
2020-07-26 07:58:15 +00:00
|
|
|
|
|
|
|
if (config->enable_online_restart_feature) {
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"online restart enabled: OK");
|
2020-07-26 07:58:15 +00:00
|
|
|
}
|
|
|
|
if (config->graceful_die_on_errors) {
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
"graceful die enabled: OK");
|
2020-07-26 07:58:15 +00:00
|
|
|
}
|
|
|
|
if (config->bindwith_reuseport) {
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
2021-01-12 07:06:27 +00:00
|
|
|
"socket bind with: SO_REUSEPORT");
|
2020-07-26 07:58:15 +00:00
|
|
|
}
|
2021-01-12 07:06:27 +00:00
|
|
|
#ifdef USE_SCRAM
|
|
|
|
od_log(logger, "config", NULL, NULL, "SCRAM auth metod: OK");
|
|
|
|
#endif
|
2020-07-26 07:58:15 +00:00
|
|
|
|
2017-09-21 13:44:19 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "");
|
2017-05-24 11:57:15 +00:00
|
|
|
od_list_t *i;
|
2018-03-06 15:23:52 +00:00
|
|
|
od_list_foreach(&config->listen, i)
|
2017-09-21 13:44:19 +00:00
|
|
|
{
|
2018-08-28 14:43:46 +00:00
|
|
|
od_config_listen_t *listen;
|
|
|
|
listen = od_container_of(i, od_config_listen_t, link);
|
2017-09-21 13:44:19 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "listen");
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, " host %s",
|
2020-04-02 11:00:56 +00:00
|
|
|
listen->host ? listen->host : "<unix socket>");
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, " port %d",
|
|
|
|
listen->port);
|
|
|
|
od_log(logger, "config", NULL, NULL, " backlog %d",
|
|
|
|
listen->backlog);
|
2017-08-29 14:43:41 +00:00
|
|
|
if (listen->tls)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
" tls %s", listen->tls);
|
2017-08-29 14:43:41 +00:00
|
|
|
if (listen->tls_ca_file)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
" tls_ca_file %s", listen->tls_ca_file);
|
2017-08-29 14:43:41 +00:00
|
|
|
if (listen->tls_key_file)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
" tls_key_file %s", listen->tls_key_file);
|
2017-08-29 14:43:41 +00:00
|
|
|
if (listen->tls_cert_file)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
" tls_cert_file %s", listen->tls_cert_file);
|
2017-08-29 14:43:41 +00:00
|
|
|
if (listen->tls_protocols)
|
2020-12-28 10:43:31 +00:00
|
|
|
od_log(logger, "config", NULL, NULL,
|
|
|
|
" tls_protocols %s", listen->tls_protocols);
|
2017-09-21 13:44:19 +00:00
|
|
|
od_log(logger, "config", NULL, NULL, "");
|
2017-05-24 11:57:15 +00:00
|
|
|
}
|
|
|
|
}
|