mirror of
https://github.com/urbit/shrub.git
synced 2024-11-28 13:54:20 +03:00
fixes dumb bug in tcp reverse proxy remote address resolution
This commit is contained in:
parent
a28bad58a7
commit
47557a5380
33
vere/http.c
33
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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user