diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2020-11-10 23:31:51 +0100 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2020-11-10 23:32:10 +0100 |
commit | 85169726a9749315a113f0ce3dc1658e9616cbe7 (patch) | |
tree | 97dffd24d2458572438977047a0e5b246f7a6f7e /src/reqs.c | |
parent | 8c3931988c501f8a78b10f60fa6538dd5a8a4296 (diff) |
WIP: BindIPv6Mapped
Diffstat (limited to 'src/reqs.c')
-rw-r--r-- | src/reqs.c | 18 |
1 files changed, 13 insertions, 5 deletions
@@ -1517,7 +1517,7 @@ void handle_connection (struct conn_s *connptr, union sockaddr_union* addr) orderedmap hashofheaders = NULL; char sock_ipaddr[IP_LENGTH]; - char sock_ipaddr_mapped[IP_LENGTH]; + char sock_ipaddr_alt[IP_LENGTH]=""; char peer_ipaddr[IP_LENGTH]; getpeer_information (addr, peer_ipaddr, sizeof(peer_ipaddr)); @@ -1525,8 +1525,16 @@ void handle_connection (struct conn_s *connptr, union sockaddr_union* addr) if (config->bindsame) getsock_ip (fd, sock_ipaddr); - if (config->bind_ipv4mapped) - getmapped_ip (config->bind_ipv4mapped, sock_ipaddr, sock_ipaddr_mapped); + switch (SOCKADDR_UNION_AF(addr)) { + case AF_INET: + if (config->bind_ipv4mapped) + getmapped_ipv6 (config->bind_ipv4mapped, sock_ipaddr, sock_ipaddr_alt); + break; + case AF_INET6: + if (config->bind_ipv6mapped) + getmapped_ipv4 (config->bind_ipv6mapped, sock_ipaddr, sock_ipaddr_alt); + break; + } log_message (LOG_CONN, config->bindsame ? "Connect (file descriptor %d): %s at [%s]" : @@ -1535,7 +1543,7 @@ void handle_connection (struct conn_s *connptr, union sockaddr_union* addr) if(!conn_init_contents (connptr, peer_ipaddr, config->bindsame ? sock_ipaddr : NULL, - config->bind_ipv4mapped ? sock_ipaddr_mapped : NULL)) { + sock_ipconfig_alt[0] ? sock_ipaddr_alt : NULL)) { close (fd); return; } @@ -1676,7 +1684,7 @@ e401: } else { connptr->server_fd = opensock (request->host, request->port, connptr->server_ip_addr, - connptr->server_ip_addr_mapped); + connptr->server_ip_addr_alt); if (connptr->server_fd < 0) { indicate_http_error (connptr, 500, "Unable to connect", "detail", |