|
|
@ -121,6 +121,12 @@ build_config(char *prefix, struct manager_ctx *manager, struct server *server) |
|
|
|
fprintf(f, ",\n\"method\":\"%s\"", manager->method); |
|
|
|
if (server->fast_open[0]) |
|
|
|
fprintf(f, ",\n\"fast_open\": %s", server->fast_open); |
|
|
|
else if (manager->fast_open) |
|
|
|
fprintf(f, ",\n\"fast_open\": true"); |
|
|
|
if (server->no_delay[0]) |
|
|
|
fprintf(f, ",\n\"no_delay\": %s", server->no_delay); |
|
|
|
else if (manager->no_delay) |
|
|
|
fprintf(f, ",\n\"no_delay\": true"); |
|
|
|
if (server->mode) |
|
|
|
fprintf(f, ",\n\"mode\":\"%s\"", server->mode); |
|
|
|
if (server->plugin) |
|
|
@ -182,6 +188,10 @@ construct_command_line(struct manager_ctx *manager, struct server *server) |
|
|
|
int len = strlen(cmd); |
|
|
|
snprintf(cmd + len, BUF_SIZE - len, " --fast-open"); |
|
|
|
} |
|
|
|
if (server->no_delay[0] == 0 && manager->no_delay) { |
|
|
|
int len = strlen(cmd); |
|
|
|
snprintf(cmd + len, BUF_SIZE - len, " --no-delay"); |
|
|
|
} |
|
|
|
if (manager->ipv6first) { |
|
|
|
int len = strlen(cmd); |
|
|
|
snprintf(cmd + len, BUF_SIZE - len, " -6"); |
|
|
@ -294,6 +304,10 @@ get_server(char *buf, int len) |
|
|
|
if (value->type == json_boolean) { |
|
|
|
strncpy(server->fast_open, (value->u.boolean ? "true" : "false"), 8); |
|
|
|
} |
|
|
|
} else if (strcmp(name, "no_delay") == 0) { |
|
|
|
if (value->type == json_boolean) { |
|
|
|
strncpy(server->no_delay, (value->u.boolean ? "true" : "false"), 8); |
|
|
|
} |
|
|
|
} else if (strcmp(name, "plugin") == 0) { |
|
|
|
if (value->type == json_string) { |
|
|
|
server->plugin = strdup(value->u.string.ptr); |
|
|
@ -844,6 +858,7 @@ main(int argc, char **argv) |
|
|
|
char *plugin_opts = NULL; |
|
|
|
|
|
|
|
int fast_open = 0; |
|
|
|
int no_delay = 0; |
|
|
|
int reuse_port = 0; |
|
|
|
int mode = TCP_ONLY; |
|
|
|
int mtu = 0; |
|
|
@ -863,6 +878,7 @@ main(int argc, char **argv) |
|
|
|
|
|
|
|
static struct option long_options[] = { |
|
|
|
{ "fast-open", no_argument, NULL, GETOPT_VAL_FAST_OPEN }, |
|
|
|
{ "no-delay", no_argument, NULL, GETOPT_VAL_NODELAY }, |
|
|
|
{ "reuse-port", no_argument, NULL, GETOPT_VAL_REUSE_PORT }, |
|
|
|
{ "acl", required_argument, NULL, GETOPT_VAL_ACL }, |
|
|
|
{ "manager-address", required_argument, NULL, |
|
|
@ -890,6 +906,9 @@ main(int argc, char **argv) |
|
|
|
case GETOPT_VAL_FAST_OPEN: |
|
|
|
fast_open = 1; |
|
|
|
break; |
|
|
|
case GETOPT_VAL_NODELAY: |
|
|
|
no_delay = 1; |
|
|
|
break; |
|
|
|
case GETOPT_VAL_ACL: |
|
|
|
acl = optarg; |
|
|
|
break; |
|
|
@ -999,6 +1018,9 @@ main(int argc, char **argv) |
|
|
|
if (fast_open == 0) { |
|
|
|
fast_open = conf->fast_open; |
|
|
|
} |
|
|
|
if (no_delay == 0) { |
|
|
|
no_delay = conf->no_delay; |
|
|
|
} |
|
|
|
if (reuse_port == 0) { |
|
|
|
reuse_port = conf->reuse_port; |
|
|
|
} |
|
|
@ -1062,6 +1084,10 @@ main(int argc, char **argv) |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
if (no_delay == 1) { |
|
|
|
LOGI("using tcp no-delay"); |
|
|
|
} |
|
|
|
|
|
|
|
// ignore SIGPIPE |
|
|
|
signal(SIGPIPE, SIG_IGN); |
|
|
|
signal(SIGCHLD, SIG_IGN); |
|
|
@ -1079,6 +1105,7 @@ main(int argc, char **argv) |
|
|
|
|
|
|
|
manager.reuse_port = reuse_port; |
|
|
|
manager.fast_open = fast_open; |
|
|
|
manager.no_delay = no_delay; |
|
|
|
manager.verbose = verbose; |
|
|
|
manager.mode = mode; |
|
|
|
manager.password = password; |
|
|
|