Skip to content

Commit

Permalink
Fix #1734
Browse files Browse the repository at this point in the history
  • Loading branch information
madeye committed Oct 13, 2017
1 parent 10a2d3e commit c67d275
Showing 1 changed file with 19 additions and 12 deletions.
31 changes: 19 additions & 12 deletions src/manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ destroy_server(struct server *server) {
}

static void
build_config(char *prefix, struct server *server)
build_config(char *prefix, struct manager_ctx *manager, struct server *server)
{
char *path = NULL;
int path_size = strlen(prefix) + strlen(server->port) + 20;
Expand All @@ -110,11 +110,18 @@ build_config(char *prefix, struct server *server)
fprintf(f, "{\n");
fprintf(f, "\"server_port\":%d,\n", atoi(server->port));
fprintf(f, "\"password\":\"%s\"", server->password);
if (server->fast_open[0]) fprintf(f, ",\n\"fast_open\": %s", server->fast_open);
if (server->mode) fprintf(f, ",\n\"mode\":\"%s\"", server->mode);
if (server->method) fprintf(f, ",\n\"method\":\"%s\"", server->method);
if (server->plugin) fprintf(f, ",\n\"plugin\":\"%s\"", server->plugin);
if (server->plugin_opts) fprintf(f, ",\n\"plugin_opts\":\"%s\"", server->plugin_opts);
if (server->method)
fprintf(f, ",\n\"method\":\"%s\"", server->method);
else if (manager->method)
fprintf(f, ",\n\"method\":\"%s\"", manager->method);
if (server->fast_open[0])
fprintf(f, ",\n\"fast_open\": %s", server->fast_open);
if (server->mode)
fprintf(f, ",\n\"mode\":\"%s\"", server->mode);
if (server->plugin)
fprintf(f, ",\n\"plugin\":\"%s\"", server->plugin);
if (server->plugin_opts)
fprintf(f, ",\n\"plugin_opts\":\"%s\"", server->plugin_opts);
fprintf(f, "\n}\n");
fclose(f);
ss_free(path);
Expand All @@ -124,17 +131,17 @@ static char *
construct_command_line(struct manager_ctx *manager, struct server *server)
{
static char cmd[BUF_SIZE];
char *method = manager->method;
int i;
int port;

build_config(working_dir, server);
port = atoi(server->port);

build_config(working_dir, manager, server);

if (server->method) method = server->method;
memset(cmd, 0, BUF_SIZE);
snprintf(cmd, BUF_SIZE,
"%s -m %s --manager-address %s -f %s/.shadowsocks_%s.pid -c %s/.shadowsocks_%s.conf",
executable, method, manager->manager_address,
working_dir, server->port, working_dir, server->port);
"%s --manager-address %s -f %s/.shadowsocks_%d.pid -c %s/.shadowsocks_%d.conf",
executable, manager->manager_address, working_dir, port, working_dir, port);

if (manager->acl != NULL) {
int len = strlen(cmd);
Expand Down

0 comments on commit c67d275

Please sign in to comment.