You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2012/03/28 19:05:50 UTC
git commit: TS-1168: Fix UrlRewrite blind tunnel handling to be IPv6
compliant.
Updated Branches:
refs/heads/master 441413b3a -> ebd4601e0
TS-1168: Fix UrlRewrite blind tunnel handling to be IPv6 compliant.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/ebd4601e
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/ebd4601e
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/ebd4601e
Branch: refs/heads/master
Commit: ebd4601e03863e6cb30b6f020d592651e10bd642
Parents: 441413b
Author: Alan M. Carroll <am...@network-geographics.com>
Authored: Wed Mar 28 11:37:26 2012 -0500
Committer: Alan M. Carroll <am...@network-geographics.com>
Committed: Wed Mar 28 12:03:13 2012 -0500
----------------------------------------------------------------------
CHANGES | 2 ++
proxy/http/remap/UrlRewrite.cc | 31 +++++++++++++------------------
2 files changed, 15 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ebd4601e/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 9b36f98..2aa958c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 3.1.4
+ *) [TS-1168] Change UrlRewrite::BuildTable to be IPv6 compliant.
+
*) [TS-1167] Updates parent socks server setup to be IPv6 compliant.
*) [TS-1166] Remove proxy/Stuffer.[cc,h] because they were unused.
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ebd4601e/proxy/http/remap/UrlRewrite.cc
----------------------------------------------------------------------
diff --git a/proxy/http/remap/UrlRewrite.cc b/proxy/http/remap/UrlRewrite.cc
index e1796ca..a739695 100644
--- a/proxy/http/remap/UrlRewrite.cc
+++ b/proxy/http/remap/UrlRewrite.cc
@@ -1376,32 +1376,26 @@ UrlRewrite::BuildTable()
// and gives a new remap rule with the IPv4 addr.
if ((maptype == FORWARD_MAP || maptype == FORWARD_MAP_REFERER || maptype == FORWARD_MAP_WITH_RECV_PORT) &&
fromScheme == URL_SCHEME_TUNNEL && (fromHost_lower[0]<'0' || fromHost_lower[0]> '9')) {
- ink_gethostbyname_r_data d;
- struct hostent *h;
- h = ink_gethostbyname_r(fromHost_lower, &d);
- // We only handle IPv4 addresses which are 4-byte long.
- if ((h != NULL) && (h->h_length == 4)) {
- char ipv4_name[128];
- url_mapping *u_mapping;
- for (int i = 0; h->h_addr_list[i] != NULL; i++) {
- ipv4_name[0] = '\0';
- int ip_len = snprintf(ipv4_name, sizeof(ipv4_name), "%hhu.%hhu.%hhu.%hhu",
- (unsigned char) h->h_addr_list[i][0],
- (unsigned char) h->h_addr_list[i][1],
- (unsigned char) h->h_addr_list[i][2],
- (unsigned char) h->h_addr_list[i][3]);
- if (ip_len > 0 && ip_len < (int) sizeof(ipv4_name)) { // Create a new url mapping with the IPv4 address.
+ addrinfo* ai_records; // returned records.
+ ip_text_buffer ipb; // buffer for address string conversion.
+ if (0 == getaddrinfo(fromHost_lower, 0, 0, &ai_records)) {
+ for ( addrinfo* ai_spot = ai_records ; ai_spot ; ai_spot = ai_spot->ai_next) {
+ if (ats_is_ip(ai_spot->ai_addr) &&
+ !ats_is_ip_any(ai_spot->ai_addr)) {
+ url_mapping *u_mapping;
+
+ ats_ip_ntop(ai_spot->ai_addr, ipb, sizeof ipb);
u_mapping = NEW(new url_mapping);
u_mapping->fromURL.create(NULL);
u_mapping->fromURL.copy(&new_mapping->fromURL);
- u_mapping->fromURL.host_set(ipv4_name, strlen(ipv4_name));
+ u_mapping->fromURL.host_set(ipb, strlen(ipb));
u_mapping->toUrl.create(NULL);
u_mapping->toUrl.copy(&new_mapping->toUrl);
if (bti.paramv[3] != NULL)
u_mapping->tag = ats_strdup(&(bti.paramv[3][0]));
bool insert_result = (maptype != FORWARD_MAP_WITH_RECV_PORT) ?
- TableInsert(forward_mappings.hash_lookup, u_mapping, ipv4_name) :
- TableInsert(forward_mappings_with_recv_port.hash_lookup, u_mapping, ipv4_name);
+ TableInsert(forward_mappings.hash_lookup, u_mapping, ipb) :
+ TableInsert(forward_mappings_with_recv_port.hash_lookup, u_mapping, ipb);
if (!insert_result) {
errStr = "Unable to add mapping rule to lookup table";
goto MAP_ERROR;
@@ -1410,6 +1404,7 @@ UrlRewrite::BuildTable()
SetHomePageRedirectFlag(u_mapping, u_mapping->toUrl);
}
}
+ freeaddrinfo(ai_records);
}
}