From 9c7add71dd12e01ebd6c7564ce16db180ae09ea3 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Mon, 30 Jan 2017 08:41:04 +0800 Subject: [PATCH] Fix #1148 --- src/local.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/local.c b/src/local.c index bf02c93f..4299e083 100644 --- a/src/local.c +++ b/src/local.c @@ -667,9 +667,13 @@ server_recv_cb(EV_P_ ev_io *w, int revents) else if (atyp == 4) LOGI("bypass [%s]:%s", ip, port); } + int err; struct sockaddr_storage storage; memset(&storage, 0, sizeof(struct sockaddr_storage)); - int err = get_sockaddr(ip, port, &storage, 0, ipv6first); + if (sni_detected || atyp == 3) + err = get_sockaddr(host, port, &storage, 0, ipv6first); + else + err = get_sockaddr(ip, port, &storage, 0, ipv6first); if (err != -1) { remote = create_remote(server->listener, (struct sockaddr *)&storage); if (remote != NULL)