fix segment fault when plugin and multi remote servers enabled

This commit is contained in:
linxiaocong
2017-09-10 14:56:25 +08:00
parent 04f419470a
commit da4bbe74fb
+3 -2
View File
@@ -1589,7 +1589,7 @@ main(int argc, char **argv)
// Setup proxy context
listen_ctx_t listen_ctx;
listen_ctx.remote_num = remote_num;
listen_ctx.remote_num = 0;
listen_ctx.remote_addr = ss_malloc(sizeof(struct sockaddr *) * remote_num);
memset(listen_ctx.remote_addr, 0, sizeof(struct sockaddr *) * remote_num);
for (i = 0; i < remote_num; i++) {
@@ -1606,6 +1606,7 @@ main(int argc, char **argv)
FATAL("failed to resolve the provided hostname");
}
listen_ctx.remote_addr[i] = (struct sockaddr *)storage;
++listen_ctx.remote_num;
if (plugin != NULL) break;
}
@@ -1699,7 +1700,7 @@ main(int argc, char **argv)
ev_io_stop(loop, &listen_ctx.io);
free_connections(loop);
for (i = 0; i < remote_num; i++)
for (i = 0; i < listen_ctx.remote_num; i++)
ss_free(listen_ctx.remote_addr[i]);
ss_free(listen_ctx.remote_addr);
}