diff options
Diffstat (limited to 'src/reqs.c')
-rw-r--r-- | src/reqs.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -1381,7 +1381,7 @@ connect_to_upstream (struct conn_s *connptr, struct request_s *request) connptr->server_fd = opensock (cur_upstream->host, cur_upstream->port, - connptr->server_ip_addr); + connptr->server_ip_addr, NULL); if (connptr->server_fd < 0) { log_message (LOG_WARNING, @@ -1530,6 +1530,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 peer_ipaddr[IP_LENGTH]; getpeer_information (addr, peer_ipaddr, sizeof(peer_ipaddr)); @@ -1537,13 +1538,17 @@ 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); + log_message (LOG_CONN, config->bindsame ? "Connect (file descriptor %d): %s at [%s]" : "Connect (file descriptor %d): %s", fd, peer_ipaddr, sock_ipaddr); if(!conn_init_contents (connptr, peer_ipaddr, - config->bindsame ? sock_ipaddr : NULL)) { + config->bindsame ? sock_ipaddr : NULL, + config->bind_ipv4mapped ? sock_ipaddr_mapped : NULL)) { close (fd); return; } @@ -1683,7 +1688,8 @@ e401: } } else { connptr->server_fd = opensock (request->host, request->port, - connptr->server_ip_addr); + connptr->server_ip_addr, + connptr->server_ip_addr_mapped); if (connptr->server_fd < 0) { indicate_http_error (connptr, 500, "Unable to connect", "detail", |