From 47557a53809a5bd405b94187b027e54cdfb5abb4 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Sun, 22 Jul 2018 00:17:33 -0400 Subject: [PATCH] fixes dumb bug in tcp reverse proxy remote address resolution --- vere/http.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/vere/http.c b/vere/http.c index 976d3bf2e3..3cc38f714e 100644 --- a/vere/http.c +++ b/vere/http.c @@ -1634,6 +1634,7 @@ _proxy_warc_free(u3_warc* cli_u) { _proxy_warc_unlink(cli_u); free(cli_u->non_u.base); + free(cli_u->hot_c); free(cli_u); } @@ -1643,10 +1644,14 @@ static u3_warc* _proxy_warc_new(u3_http* htp_u, u3_atom sip, c3_s por_s, c3_o sec) { u3_warc* cli_u = c3_malloc(sizeof(*cli_u)); + cli_u->htp_u = htp_u; + cli_u->por_s = por_s; + // XX set here instead of u3_http_ef_that() ? + cli_u->non_u = uv_buf_init(0, 0); cli_u->sip = sip; cli_u->sec = sec; - cli_u->htp_u = htp_u; - cli_u->por_s = por_s; // set after opened + // XX set here instead of _proxy_ward_resolve() ? + cli_u->hot_c = 0; cli_u->nex_u = 0; cli_u->pre_u = 0; @@ -2346,18 +2351,6 @@ _proxy_ward_connect(u3_warc* cli_u) uv_tcp_init(u3L, &con_u->don_u); - if ( 0 == cli_u->hot_c ) { - u3_noun sip = u3dc("scot", 'p', u3k(cli_u->sip)); - c3_c* sip_c = u3r_string(sip); - c3_w len_w = 1 + strlen(sip_c) + strlen(u3_Host.ops_u.dns_c); - cli_u->hot_c = c3_malloc(len_w); - // incremented to skip '~' - snprintf(cli_u->hot_c, len_w, "%s.%s", sip_c + 1, u3_Host.ops_u.dns_c); - - free(sip_c); - u3z(sip); - } - struct sockaddr_in add_u; memset(&add_u, 0, sizeof(add_u)); @@ -2417,7 +2410,17 @@ _proxy_ward_resolve(u3_warc* cli_u) hin_u.ai_socktype = SOCK_STREAM; hin_u.ai_protocol = IPPROTO_TCP; - // XX set port? + if ( 0 == cli_u->hot_c ) { + u3_noun sip = u3dc("scot", 'p', u3k(cli_u->sip)); + c3_c* sip_c = u3r_string(sip); + c3_w len_w = 1 + strlen(sip_c) + strlen(u3_Host.ops_u.dns_c); + cli_u->hot_c = c3_malloc(len_w); + // incremented to skip '~' + snprintf(cli_u->hot_c, len_w, "%s.%s", sip_c + 1, u3_Host.ops_u.dns_c); + + free(sip_c); + u3z(sip); + } c3_i sas_i;