Repository: trafficserver Updated Branches: refs/heads/master 954f77ee1 -> 078a9a8c0
[TS-2157] Replace addr with src_addr and dst_addr. This closes #182 Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/078a9a8c Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/078a9a8c Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/078a9a8c Branch: refs/heads/master Commit: 078a9a8c0fa210f0f2d2a64f2aa0f285d602d13a Parents: 954f77e Author: es <[email protected]> Authored: Tue Mar 17 12:13:30 2015 -0700 Committer: Alan M. Carroll <[email protected]> Committed: Tue Jul 7 21:13:42 2015 -0500 ---------------------------------------------------------------------- lib/ts/ink_inet.h | 13 ++++- proxy/InkAPI.cc | 12 ++--- proxy/Prefetch.cc | 6 +-- proxy/api/ts/ts.h | 4 ++ proxy/http/HttpSM.cc | 88 +++++++++++++++++---------------- proxy/http/HttpTransact.cc | 82 +++++++++++++++--------------- proxy/http/HttpTransact.h | 25 +++++----- proxy/http/HttpUpdateSM.cc | 2 +- proxy/http/remap/RemapProcessor.cc | 6 +-- proxy/http/remap/UrlRewrite.cc | 4 +- proxy/logging/LogAccessHttp.cc | 10 ++-- 11 files changed, 134 insertions(+), 118 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/lib/ts/ink_inet.h ---------------------------------------------------------------------- diff --git a/lib/ts/ink_inet.h b/lib/ts/ink_inet.h index 553f444..1b77642 100644 --- a/lib/ts/ink_inet.h +++ b/lib/ts/ink_inet.h @@ -71,9 +71,12 @@ union IpEndpoint { struct sockaddr_in sin; ///< IPv4 struct sockaddr_in6 sin6; ///< IPv6 + /** Assign from a socket address. + The entire address (all parts) are copied if the @a ip is valid. + */ self &assign(sockaddr const *ip ///< Source address, family, port. ); - /// Construct from an @a addr and @a port. + /// Assign from an @a addr and @a port. self &assign(IpAddr const &addr, ///< Address and address family. in_port_t port = 0 ///< Port (network order). ); @@ -103,6 +106,8 @@ union IpEndpoint { in_port_t &port(); /// Port in network order. in_port_t port() const; + /// Port in host horder. + in_port_t host_order_port() const; operator sockaddr *() { return &sa; } operator sockaddr const *() const { return &sa; } @@ -1465,6 +1470,12 @@ IpEndpoint::port() const return ats_ip_port_cast(&sa); } +inline in_port_t +IpEndpoint::host_order_port() const +{ + return ntohs(this->port()); +} + inline bool IpEndpoint::isValid() const { http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/InkAPI.cc ---------------------------------------------------------------------- diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc index 0c0995e..16973b1 100644 --- a/proxy/InkAPI.cc +++ b/proxy/InkAPI.cc @@ -5287,7 +5287,7 @@ TSHttpTxnServerAddrGet(TSHttpTxn txnp) sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS); HttpSM *sm = reinterpret_cast<HttpSM *>(txnp); - return &sm->t_state.server_info.addr.sa; + return &sm->t_state.server_info.dst_addr.sa; } TSReturnCode @@ -5296,9 +5296,7 @@ TSHttpTxnServerAddrSet(TSHttpTxn txnp, struct sockaddr const *addr) sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS); HttpSM *sm = reinterpret_cast<HttpSM *>(txnp); - if (ats_ip_copy(&sm->t_state.server_info.addr.sa, addr)) { - ats_ip_port_cast(&sm->t_state.server_info.addr.sa) = ats_ip_port_cast(addr); - sm->t_state.server_info.port = htons(ats_ip_port_cast(addr)); + if (ats_ip_copy(&sm->t_state.server_info.dst_addr.sa, addr)) { sm->t_state.api_server_addr_set = true; return TS_SUCCESS; } else { @@ -5311,8 +5309,8 @@ TSHttpTxnClientIncomingPortSet(TSHttpTxn txnp, int port) { sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS); - HttpSM *sm = (HttpSM *)txnp; - sm->t_state.client_info.port = port; + HttpSM *sm = reinterpret_cast<HttpSM *>(txnp); + sm->t_state.client_info.dst_addr.port() = htons(port); } // [amc] This might use the port. The code path should do that but it @@ -5349,7 +5347,7 @@ TSHttpTxnNextHopAddrGet(TSHttpTxn txnp) if (sm->t_state.current.server == NULL) return NULL; - return &sm->t_state.current.server->addr.sa; + return &sm->t_state.current.server->dst_addr.sa; } TSReturnCode http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/Prefetch.cc ---------------------------------------------------------------------- diff --git a/proxy/Prefetch.cc b/proxy/Prefetch.cc index 521aa83..5e3d9ff 100644 --- a/proxy/Prefetch.cc +++ b/proxy/Prefetch.cc @@ -579,7 +579,7 @@ PrefetchTransform::redirect(HTTPHdr *resp) } Debug("PrefetchTransform", "Found embedded URL: %s", redirect_url); - entry->req_ip = m_sm->t_state.client_info.addr; + entry->req_ip = m_sm->t_state.client_info.src_addr; PrefetchBlaster *blaster = prefetchBlasterAllocator.alloc(); blaster->init(entry, &m_sm->t_state.hdr_info.client_request, this); @@ -602,7 +602,7 @@ PrefetchTransform::parse_data(IOBufferReader *reader) continue; } // Debug("PrefetchParserURLs", "Found embedded URL: %s", url_start); - ats_ip_copy(&entry->req_ip, &m_sm->t_state.client_info.addr); + ats_ip_copy(&entry->req_ip, &m_sm->t_state.client_info.src_addr); PrefetchBlaster *blaster = prefetchBlasterAllocator.alloc(); blaster->init(entry, &m_sm->t_state.hdr_info.client_request, this); @@ -645,7 +645,7 @@ check_n_attach_prefetch_transform(HttpSM *sm, HTTPHdr *resp, bool from_cache) INKVConnInternal *prefetch_trans; ip_text_buffer client_ipb; - IpEndpoint client_ip = sm->t_state.client_info.addr; + IpEndpoint client_ip = sm->t_state.client_info.src_addr; // we depend on this to setup @a client_ipb for all subsequent Debug(). Debug("PrefetchParser", "Checking response for request from %s\n", ats_ip_ntop(&client_ip, client_ipb, sizeof(client_ipb))); http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/api/ts/ts.h ---------------------------------------------------------------------- diff --git a/proxy/api/ts/ts.h b/proxy/api/ts/ts.h index 779f99c..882d10d 100644 --- a/proxy/api/ts/ts.h +++ b/proxy/api/ts/ts.h @@ -1284,6 +1284,10 @@ tsapi TSReturnCode TSHttpTxnCacheLookupStatusGet(TSHttpTxn txnp, int *lookup_sta tsapi TSReturnCode TSHttpTxnTransformRespGet(TSHttpTxn txnp, TSMBuffer *bufp, TSMLoc *offset); +/** Set the @a port value for the inbound (user agent) connection in the transaction @a txnp. + This is used primarily where the conection is synthetic and therefore does not have a port. + @note @a port is in @b host @b order. +*/ tsapi void TSHttpTxnClientIncomingPortSet(TSHttpTxn txnp, int port); /** Get SSL object of this session. http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/http/HttpSM.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc index 70520a9..37caa6e 100644 --- a/proxy/http/HttpSM.cc +++ b/proxy/http/HttpSM.cc @@ -487,8 +487,9 @@ HttpSM::attach_client_session(HttpClientSession *client_vc, IOBufferReader *buff NetVConnection *netvc = client_vc->get_netvc(); - ats_ip_copy(&t_state.client_info.addr, netvc->get_remote_addr()); - t_state.client_info.port = netvc->get_local_port(); + ats_ip_copy(&t_state.client_info.src_addr, netvc->get_remote_addr()); + ats_ip_copy(&t_state.client_info.dst_addr, netvc->get_local_addr()); + t_state.client_info.dst_addr.port() = netvc->get_local_port(); t_state.client_info.is_transparent = netvc->get_is_transparent(); t_state.backdoor_request = !client_vc->hooks_enabled(); t_state.client_info.port_attribute = static_cast<HttpProxyPort::TransportType>(netvc->attributes); @@ -1624,9 +1625,8 @@ HttpSM::state_http_server_open(int event, void *data) UnixNetVConnection *server_vc = (UnixNetVConnection*)data; printf("client fd is :%d , server fd is %d\n",vc->con.fd, server_vc->con.fd); */ - ats_ip_copy(&session->server_ip, &t_state.current.server->addr); - session->new_connection((NetVConnection *)data); - ats_ip_port_cast(&session->server_ip) = htons(t_state.current.server->port); + ats_ip_copy(&session->server_ip, &t_state.current.server->dst_addr); + session->new_connection(static_cast<NetVConnection *>(data)); session->state = HSS_ACTIVE; attach_server_session(session); @@ -1660,8 +1660,8 @@ HttpSM::state_http_server_open(int event, void *data) if (is_debug_tag_set("http_tproxy")) { ip_port_text_buffer ip_c, ip_s; Debug("http_tproxy", "Force close of client connect (%s->%s) due to EADDRNOTAVAIL [%" PRId64 "]", - ats_ip_nptop(&t_state.client_info.addr.sa, ip_c, sizeof ip_c), - ats_ip_nptop(&t_state.server_info.addr.sa, ip_s, sizeof ip_s), sm_id); + ats_ip_nptop(&t_state.client_info.src_addr.sa, ip_c, sizeof ip_c), + ats_ip_nptop(&t_state.server_info.dst_addr.sa, ip_s, sizeof ip_s), sm_id); } t_state.client_info.keep_alive = HTTP_NO_KEEPALIVE; // part of the problem, clear it. terminate_sm = true; @@ -2022,7 +2022,7 @@ HttpSM::process_hostdb_info(HostDBInfo *r) // may be very large, we cannot use client_request_time to approximate // current time when calling select_best_http(). HostDBRoundRobin *rr = r->rr(); - ret = rr->select_best_http(&t_state.client_info.addr.sa, now, (int)t_state.txn_conf->down_server_timeout); + ret = rr->select_best_http(&t_state.client_info.src_addr.sa, now, static_cast<int>(t_state.txn_conf->down_server_timeout)); // set the srv target`s last_failure if (t_state.dns_info.srv_lookup_success) { @@ -2114,7 +2114,7 @@ HttpSM::state_hostdb_lookup(int event, void *data) char *host_name = t_state.dns_info.srv_lookup_success ? t_state.dns_info.srv_hostname : t_state.dns_info.lookup_name; HostDBProcessor::Options opt; - opt.port = t_state.dns_info.srv_lookup_success ? t_state.dns_info.srv_port : t_state.server_info.port; + opt.port = t_state.dns_info.srv_lookup_success ? t_state.dns_info.srv_port : t_state.server_info.dst_addr.host_order_port(); opt.flags = (t_state.cache_info.directives.does_client_permit_dns_storing) ? HostDBProcessor::HOSTDB_DO_NOT_FORCE_DNS : HostDBProcessor::HOSTDB_FORCE_DNS_RELOAD; opt.timeout = (t_state.api_txn_dns_timeout_value != -1) ? t_state.api_txn_dns_timeout_value : 0; @@ -2185,7 +2185,7 @@ HttpSM::state_mark_os_down(int event, void *data) ink_assert(t_state.current.server != NULL); ink_assert(t_state.current.request_to == HttpTransact::ORIGIN_SERVER); if (t_state.current.server) { - mark_down = r->rr()->find_ip(&t_state.current.server->addr.sa); + mark_down = r->rr()->find_ip(&t_state.current.server->dst_addr.sa); } } else { // No longer a round robin, check to see if our address is the same @@ -3937,7 +3937,7 @@ HttpSM::do_hostdb_lookup() historical_action = pending_action; } else { char *host_name = t_state.dns_info.srv_lookup_success ? t_state.dns_info.srv_hostname : t_state.dns_info.lookup_name; - opt.port = t_state.dns_info.srv_lookup_success ? t_state.dns_info.srv_port : t_state.server_info.port; + opt.port = t_state.dns_info.srv_lookup_success ? t_state.dns_info.srv_port : t_state.server_info.dst_addr.isValid() ? t_state.server_info.dst_addr.host_order_port() : t_state.hdr_info.client_request.port_get(); opt.flags = (t_state.cache_info.directives.does_client_permit_dns_storing) ? HostDBProcessor::HOSTDB_DO_NOT_FORCE_DNS : HostDBProcessor::HOSTDB_FORCE_DNS_RELOAD; opt.timeout = (t_state.api_txn_dns_timeout_value != -1) ? t_state.api_txn_dns_timeout_value : 0; @@ -3959,7 +3959,7 @@ HttpSM::do_hostdb_lookup() // If there is not a current server, we must be looking up the origin // server at the beginning of the transaction - int server_port = t_state.current.server ? t_state.current.server->port : t_state.server_info.port; + int server_port = t_state.current.server ? t_state.current.server->dst_addr.host_order_port() : t_state.server_info.dst_addr.isValid() ? t_state.server_info.dst_addr.host_order_port() : t_state.hdr_info.client_request.port_get(); if (t_state.api_txn_dns_timeout_value != -1) { DebugSM("http_timeout", "beginning DNS lookup. allowing %d mseconds for DNS lookup", t_state.api_txn_dns_timeout_value); @@ -4019,7 +4019,7 @@ HttpSM::do_hostdb_update_if_necessary() } // If we failed back over to the origin server, we don't have our // hostdb information anymore which means we shouldn't update the hostdb - if (!ats_ip_addr_eq(&t_state.current.server->addr.sa, t_state.host_db_info.ip())) { + if (!ats_ip_addr_eq(&t_state.current.server->dst_addr.sa, t_state.host_db_info.ip())) { DebugSM("http", "[%" PRId64 "] skipping hostdb update due to server failover", sm_id); return; } @@ -4046,11 +4046,12 @@ HttpSM::do_hostdb_update_if_necessary() } else { if (t_state.host_db_info.app.http_data.last_failure != 0) { t_state.host_db_info.app.http_data.last_failure = 0; - ats_ip_port_cast(&t_state.current.server->addr) = htons(t_state.current.server->port); issue_update |= 1; char addrbuf[INET6_ADDRPORTSTRLEN]; DebugSM("http", "[%" PRId64 "] hostdb update marking IP: %s as up", sm_id, - ats_ip_nptop(&t_state.current.server->addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_nptop(&t_state.current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); + DebugSM("http", "[%" PRId64 "] hostdb update marking IP: %s as up", sm_id, + ats_ip_nptop(&t_state.current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); } if (t_state.dns_info.srv_lookup_success && t_state.dns_info.srv_app.http_data.last_failure != 0) { @@ -4061,12 +4062,12 @@ HttpSM::do_hostdb_update_if_necessary() } if (issue_update) { - hostDBProcessor.setby(t_state.current.server->name, strlen(t_state.current.server->name), &t_state.current.server->addr.sa, + hostDBProcessor.setby(t_state.current.server->name, strlen(t_state.current.server->name), &t_state.current.server->dst_addr.sa, &t_state.host_db_info.app); } char addrbuf[INET6_ADDRPORTSTRLEN]; - DebugSM("http", "server info = %s", ats_ip_nptop(&t_state.current.server->addr.sa, addrbuf, sizeof(addrbuf))); + DebugSM("http", "server info = %s", ats_ip_nptop(&t_state.current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); return; } @@ -4508,7 +4509,7 @@ HttpSM::do_cache_prepare_action(HttpCacheSM *c_sm, CacheHTTPInfo *object_read_in void HttpSM::do_http_server_open(bool raw) { - int ip_family = t_state.current.server->addr.sa.sa_family; + int ip_family = t_state.current.server->dst_addr.sa.sa_family; DebugSM("http_track", "entered inside do_http_server_open ][%s]", ats_ip_family_name(ip_family)); ink_assert(server_entry == NULL); @@ -4522,15 +4523,14 @@ HttpSM::do_http_server_open(bool raw) ink_assert(pending_action == NULL); if (false == t_state.api_server_addr_set) { - ink_assert(t_state.current.server->port > 0); - t_state.current.server->addr.port() = htons(t_state.current.server->port); + ink_assert(t_state.current.server->dst_addr.host_order_port() > 0); } else { - ink_assert(ats_ip_port_cast(&t_state.current.server->addr) != 0); + ink_assert(t_state.current.server->dst_addr.port() != 0); // verify the plugin set it to something. } char addrbuf[INET6_ADDRPORTSTRLEN]; DebugSM("http", "[%" PRId64 "] open connection to %s: %s", sm_id, t_state.current.server->name, - ats_ip_nptop(&t_state.current.server->addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_nptop(&t_state.current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); if (plugin_tunnel) { PluginVCCore *t = plugin_tunnel; @@ -4606,11 +4606,11 @@ HttpSM::do_http_server_open(bool raw) (t_state.txn_conf->keep_alive_post_out == 1 || t_state.hdr_info.request_content_length == 0) && !is_private() && ua_session != NULL) { HSMresult_t shared_result; - shared_result = httpSessionManager.acquire_session(this, // state machine - &t_state.current.server->addr.sa, // ip + port - t_state.current.server->name, // hostname - ua_session, // has ptr to bound ua sessions - this // sm + shared_result = httpSessionManager.acquire_session(this, // state machine + &t_state.current.server->dst_addr.sa, // ip + port + t_state.current.server->name, // hostname + ua_session, // has ptr to bound ua sessions + this // sm ); switch (shared_result) { @@ -4640,7 +4640,7 @@ HttpSM::do_http_server_open(bool raw) // so there's no point in further checking on the match or pool values. But why check anything? The // client has already exchanged a request with this specific origin server and has sent another one // shouldn't we just automatically keep the association? - if (ats_ip_addr_port_eq(&existing_ss->server_ip.sa, &t_state.current.server->addr.sa)) { + if (ats_ip_addr_port_eq(&existing_ss->server_ip.sa, &t_state.current.server->dst_addr.sa)) { ua_session->attach_server_session(NULL); existing_ss->state = HSS_ACTIVE; this->attach_server_session(existing_ss); @@ -4690,9 +4690,9 @@ HttpSM::do_http_server_open(bool raw) ConnectionCount *connections = ConnectionCount::getInstance(); char addrbuf[INET6_ADDRSTRLEN]; - if (connections->getCount((t_state.current.server->addr)) >= t_state.txn_conf->origin_max_connections) { + if (connections->getCount((t_state.current.server->dst_addr)) >= t_state.txn_conf->origin_max_connections) { DebugSM("http", "[%" PRId64 "] over the number of connection for this host: %s", sm_id, - ats_ip_ntop(&t_state.current.server->addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_ntop(&t_state.current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); ink_assert(pending_action == NULL); pending_action = eventProcessor.schedule_in(this, HRTIME_MSECONDS(100)); return; @@ -4720,7 +4720,7 @@ HttpSM::do_http_server_open(bool raw) opt.local_ip = outbound_ip; } else if (ua_session->f_outbound_transparent) { opt.addr_binding = NetVCOptions::FOREIGN_ADDR; - opt.local_ip = t_state.client_info.addr; + opt.local_ip = t_state.client_info.src_addr; /* If the connection is server side transparent, we can bind to the port that the client chose instead of randomly assigning one at the proxy. This is controlled by the 'use_client_source_port' @@ -4753,14 +4753,14 @@ HttpSM::do_http_server_open(bool raw) const char *host = t_state.hdr_info.server_request.host_get(&len); if (host && len > 0) opt.set_sni_servername(host, len); - connect_action_handle = sslNetProcessor.connect_re(this, // state machine - &t_state.current.server->addr.sa, // addr + port + connect_action_handle = sslNetProcessor.connect_re(this, // state machine + &t_state.current.server->dst_addr.sa, // addr + port &opt); } else { if (t_state.method != HTTP_WKSIDX_CONNECT) { DebugSM("http", "calling netProcessor.connect_re"); - connect_action_handle = netProcessor.connect_re(this, // state machine - &t_state.current.server->addr.sa, // addr + port + connect_action_handle = netProcessor.connect_re(this, // state machine + &t_state.current.server->dst_addr.sa, // addr + port &opt); } else { // Setup the timeouts @@ -4779,8 +4779,8 @@ HttpSM::do_http_server_open(bool raw) connect_timeout = t_state.txn_conf->connect_attempts_timeout; } DebugSM("http", "calling netProcessor.connect_s"); - connect_action_handle = netProcessor.connect_s(this, // state machine - &t_state.current.server->addr.sa, // addr + port + connect_action_handle = netProcessor.connect_s(this, // state machine + &t_state.current.server->dst_addr.sa, // addr + port connect_timeout, &opt); } } @@ -4926,7 +4926,7 @@ HttpSM::mark_host_failure(HostDBInfo *info, time_t time_down) char *url_str = t_state.hdr_info.client_request.url_string_get(&t_state.arena, 0); Log::error("CONNECT: could not connect to %s " "for '%s' (setting last failure time)", - ats_ip_ntop(&t_state.current.server->addr.sa, addrbuf, sizeof(addrbuf)), url_str ? url_str : "<none>"); + ats_ip_ntop(&t_state.current.server->dst_addr.sa, addrbuf, sizeof(addrbuf)), url_str ? url_str : "<none>"); if (url_str) t_state.arena.str_free(url_str); } @@ -4939,7 +4939,9 @@ HttpSM::mark_host_failure(HostDBInfo *info, time_t time_down) #endif DebugSM("http", "[%" PRId64 "] hostdb update marking IP: %s as down", sm_id, - ats_ip_nptop(&t_state.current.server->addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_nptop(&t_state.current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); + DebugSM("http", "[%" PRId64 "] hostdb update marking IP: %s as down", sm_id, + ats_ip_nptop(&t_state.current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); } void @@ -6691,7 +6693,7 @@ HttpSM::update_stats() status = t_state.hdr_info.client_response.status_get(); } char client_ip[INET6_ADDRSTRLEN]; - ats_ip_ntop(&t_state.client_info.addr, client_ip, sizeof(client_ip)); + ats_ip_ntop(&t_state.client_info.src_addr, client_ip, sizeof(client_ip)); Error("[%" PRId64 "] Slow Request: " "client_ip: %s:%u " "url: %s " @@ -6717,7 +6719,7 @@ HttpSM::update_stats() "sm_finish: %.3f " "plugin_active: %.3f " "plugin_total: %.3f", - sm_id, client_ip, ats_ip_port_host_order(&t_state.client_info.addr), url_string, status, unique_id_string, + sm_id, client_ip, t_state.client_info.src_addr.host_order_port(), url_string, status, unique_id_string, redirection_tries, client_response_body_bytes, fd, t_state.client_info.state, t_state.server_info.state, milestones.difference(TransactionMilestones::SM_START, TransactionMilestones::UA_BEGIN), milestones.difference(TransactionMilestones::SM_START, TransactionMilestones::UA_FIRST_READ), @@ -6907,9 +6909,9 @@ HttpSM::set_next_state() */ ip_text_buffer ipb; DebugSM("dns", "[HttpTransact::HandleRequest] Skipping DNS lookup for API supplied target %s.\n", - ats_ip_ntop(&t_state.server_info.addr, ipb, sizeof(ipb))); + ats_ip_ntop(&t_state.server_info.dst_addr, ipb, sizeof(ipb))); // this seems wasteful as we will just copy it right back - ats_ip_copy(t_state.host_db_info.ip(), &t_state.server_info.addr); + ats_ip_copy(t_state.host_db_info.ip(), &t_state.server_info.dst_addr); t_state.dns_info.lookup_success = true; call_transact_and_set_next_state(NULL); break; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/http/HttpTransact.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc index 304a4eb..6c765b6 100644 --- a/proxy/http/HttpTransact.cc +++ b/proxy/http/HttpTransact.cc @@ -239,7 +239,7 @@ find_server_and_update_current_info(HttpTransact::State *s) // to go the origin server, we can only obey this if we // dns'ed the origin server if (s->parent_result.r == PARENT_DIRECT && s->http_config_param->no_dns_forward_to_parent != 0) { - ink_assert(!ats_is_ip(&s->server_info.addr)); + ink_assert(!s->server_info.dst_addr.isValid()); s->parent_result.r = PARENT_FAIL; } break; @@ -268,7 +268,6 @@ find_server_and_update_current_info(HttpTransact::State *s) switch (s->parent_result.r) { case PARENT_SPECIFIED: s->parent_info.name = s->arena.str_store(s->parent_result.hostname, strlen(s->parent_result.hostname)); - s->parent_info.port = s->parent_result.port; update_current_info(&s->current, &s->parent_info, HttpTransact::PARENT_PROXY, (s->current.attempts)++); update_dns_info(&s->dns_info, &s->current, 0, &s->arena); ink_assert(s->dns_info.looking_up == HttpTransact::PARENT_PROXY); @@ -712,7 +711,7 @@ HttpTransact::StartRemapRequest(State *s) s->cop_test_page = (ptr_len_cmp(host, host_len, local_host_ip_str, sizeof(local_host_ip_str) - 1) == 0) && (ptr_len_cmp(path, path_len, syntxt, sizeof(syntxt) - 1) == 0) && port == s->http_config_param->synthetic_port && s->method == HTTP_WKSIDX_GET && - s->orig_scheme == URL_WKSIDX_HTTP && ats_ip4_addr_cast(&s->client_info.addr.sa) == htonl(INADDR_LOOPBACK); + s->orig_scheme == URL_WKSIDX_HTTP && ats_ip4_addr_cast(&s->client_info.dst_addr.sa) == htonl(INADDR_LOOPBACK); ////////////////////////////////////////////////////////////////// // FIX: this logic seems awfully convoluted and hard to follow; // @@ -1367,7 +1366,7 @@ HttpTransact::HandleRequest(State *s) // DNS service available, we just want to forward the request // the parent proxy. In this case, we never find out the // origin server's ip. So just skip past OSDNS - ats_ip_invalidate(&s->server_info.addr); + ats_ip_invalidate(&s->server_info.dst_addr); StartAccessControl(s); return; } else if (s->http_config_param->no_origin_server_dns) { @@ -1435,6 +1434,8 @@ HttpTransact::setup_plugin_request_intercept(State *s) s->server_info.keep_alive = HTTP_NO_KEEPALIVE; s->host_db_info.app.http_data.http_version = HostDBApplicationInfo::HTTP_VERSION_10; s->host_db_info.app.http_data.pipeline_max = 1; + s->server_info.dst_addr.setToAnyAddr(AF_INET); // must set an address or we can't set the port. + s->server_info.dst_addr.port() = htons(s->hdr_info.client_request.port_get()); // this is the info that matters. // Build the request to the server build_request(s, &s->hdr_info.client_request, &s->hdr_info.server_request, s->client_info.http_version); @@ -1523,7 +1524,7 @@ HttpTransact::PPDNSLookup(State *s) if (!s->dns_info.lookup_success) { // DNS lookup of parent failed, find next parent or o.s. find_server_and_update_current_info(s); - if (!ats_is_ip(&s->current.server->addr)) { + if (!s->current.server->dst_addr.isValid()) { if (s->current.request_to == PARENT_PROXY) { TRANSACT_RETURN(SM_ACTION_DNS_LOOKUP, PPDNSLookup); } else { @@ -1536,13 +1537,14 @@ HttpTransact::PPDNSLookup(State *s) } } else { // lookup succeeded, open connection to p.p. - ats_ip_copy(&s->parent_info.addr, s->host_db_info.ip()); + ats_ip_copy(&s->parent_info.dst_addr, s->host_db_info.ip()); + s->parent_info.dst_addr.port() = htons(s->parent_result.port); get_ka_info_from_host_db(s, &s->parent_info, &s->client_info, &s->host_db_info); s->parent_info.dns_round_robin = s->host_db_info.round_robin; char addrbuf[INET6_ADDRSTRLEN]; DebugTxn("http_trans", "[PPDNSLookup] DNS lookup for sm_id[%" PRId64 "] successful IP: %s", s->state_machine->sm_id, - ats_ip_ntop(&s->parent_info.addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_ntop(&s->parent_info.dst_addr.sa, addrbuf, sizeof(addrbuf))); } // Since this function can be called several times while retrying @@ -1591,14 +1593,14 @@ HttpTransact::ReDNSRoundRobin(State *s) // Our ReDNS of the server succeeded so update the necessary // information and try again - ats_ip_copy(&s->server_info.addr, s->host_db_info.ip()); - ats_ip_copy(&s->request_data.dest_ip, &s->server_info.addr); + ats_ip_copy(&s->server_info.dst_addr, s->host_db_info.ip()); + ats_ip_copy(&s->request_data.dest_ip, &s->server_info.dst_addr); get_ka_info_from_host_db(s, &s->server_info, &s->client_info, &s->host_db_info); s->server_info.dns_round_robin = s->host_db_info.round_robin; char addrbuf[INET6_ADDRSTRLEN]; DebugTxn("http_trans", "[ReDNSRoundRobin] DNS lookup for O.S. successful IP: %s", - ats_ip_ntop(&s->server_info.addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_ntop(&s->server_info.dst_addr.sa, addrbuf, sizeof(addrbuf))); s->next_action = how_to_open_connection(s); } else { @@ -1716,7 +1718,7 @@ HttpTransact::OSDNSLookup(State *s) // HostDB addresses. We use those if they're different from the CTA. // In all cases we now commit to client or HostDB for our source. if (s->host_db_info.round_robin) { - HostDBInfo *cta = s->host_db_info.rr()->select_next(&s->current.server->addr.sa); + HostDBInfo *cta = s->host_db_info.rr()->select_next(&s->current.server->dst_addr.sa); if (cta) { // found another addr, lock in host DB. s->host_db_info = *cta; @@ -1725,7 +1727,7 @@ HttpTransact::OSDNSLookup(State *s) // nothing else there, continue with CTA. s->dns_info.os_addr_style = DNSLookupInfo::OS_ADDR_USE_CLIENT; } - } else if (ats_ip_addr_eq(s->host_db_info.ip(), &s->server_info.addr.sa)) { + } else if (ats_ip_addr_eq(s->host_db_info.ip(), &s->server_info.dst_addr.sa)) { s->dns_info.os_addr_style = DNSLookupInfo::OS_ADDR_USE_CLIENT; } else { s->dns_info.os_addr_style = DNSLookupInfo::OS_ADDR_USE_HOSTDB; @@ -1735,15 +1737,16 @@ HttpTransact::OSDNSLookup(State *s) // Check to see if can fullfill expect requests based on the cached // update some state variables with hostdb information that has // been provided. - ats_ip_copy(&s->server_info.addr, s->host_db_info.ip()); - ats_ip_copy(&s->request_data.dest_ip, &s->server_info.addr); + ats_ip_copy(&s->server_info.dst_addr, s->host_db_info.ip()); + s->server_info.dst_addr.port() = htons(s->hdr_info.client_request.port_get()); // now we can set the port. + ats_ip_copy(&s->request_data.dest_ip, &s->server_info.dst_addr); get_ka_info_from_host_db(s, &s->server_info, &s->client_info, &s->host_db_info); s->server_info.dns_round_robin = s->host_db_info.round_robin; char addrbuf[INET6_ADDRSTRLEN]; DebugTxn("http_trans", "[OSDNSLookup] DNS lookup for O.S. successful " "IP: %s", - ats_ip_ntop(&s->server_info.addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_ntop(&s->server_info.dst_addr.sa, addrbuf, sizeof(addrbuf))); // so the dns lookup was a success, but the lookup succeeded on // a hostname which was expanded by the traffic server. we should @@ -2688,7 +2691,7 @@ HttpTransact::HandleCacheOpenReadHit(State *s) if (server_up || s->stale_icp_lookup) { bool check_hostdb = get_ka_info_from_config(s, s->current.server); DebugTxn("http_trans", "CacheOpenReadHit - check_hostdb %d", check_hostdb); - if (!s->stale_icp_lookup && (check_hostdb || !ats_is_ip(&s->current.server->addr))) { + if (!s->stale_icp_lookup && (check_hostdb || !s->current.server->dst_addr.isValid())) { // ink_release_assert(s->current.request_to == PARENT_PROXY || // s->http_config_param->no_dns_forward_to_parent != 0); @@ -3113,7 +3116,7 @@ HttpTransact::HandleCacheOpenReadMiss(State *s) if (!h->is_cache_control_set(HTTP_VALUE_ONLY_IF_CACHED)) { find_server_and_update_current_info(s); - if (!ats_is_ip(&s->current.server->addr)) { + if (!s->current.server->dst_addr.isValid()) { ink_release_assert(s->current.request_to == PARENT_PROXY || s->http_config_param->no_dns_forward_to_parent != 0); if (s->current.request_to == PARENT_PROXY) { TRANSACT_RETURN(SM_ACTION_DNS_LOOKUP, HttpTransact::PPDNSLookup); @@ -3155,13 +3158,13 @@ HttpTransact::HandleICPLookup(State *s) if (s->icp_lookup_success == true) { HTTP_INCREMENT_TRANS_STAT(http_icp_suggested_lookups_stat); DebugTxn("http_trans", "[HandleICPLookup] Success, sending request to icp suggested host."); - ats_ip4_set(&s->icp_info.addr, s->icp_ip_result.sin_addr.s_addr); - s->icp_info.port = ntohs(s->icp_ip_result.sin_port); + ats_ip4_set(&s->icp_info.dst_addr, s->icp_ip_result.sin_addr.s_addr); + s->icp_info.dst_addr.port() = ntohs(s->icp_ip_result.sin_port); // TODO in this case we should go to the miss case // just a little shy about using goto's, that's all. - ink_release_assert((s->icp_info.port != s->client_info.port) || - (ats_ip_addr_cmp(&s->icp_info.addr.sa, &Machine::instance()->ip.sa) != 0)); + ink_release_assert((s->icp_info.dst_addr.port() != s->client_info.dst_addr.port()) || + (ats_ip_addr_cmp(&s->icp_info.dst_addr.sa, &Machine::instance()->ip.sa) != 0)); // Since the ICPDNSLookup is not called, these two // values are not initialized. @@ -3183,10 +3186,10 @@ HttpTransact::HandleICPLookup(State *s) SET_VIA_STRING(VIA_DETAIL_CACHE_LOOKUP, VIA_DETAIL_MISS_NOT_CACHED); DebugTxn("http_trans", "[HandleICPLookup] Failure, sending request to forward server."); s->parent_info.name = NULL; - ink_zero(s->parent_info.addr); + ink_zero(s->parent_info.dst_addr); find_server_and_update_current_info(s); - if (!ats_is_ip(&s->current.server->addr)) { + if (!ats_is_ip(&s->current.server->dst_addr)) { if (s->current.request_to == PARENT_PROXY) { TRANSACT_RETURN(SM_ACTION_DNS_LOOKUP, PPDNSLookup); } else { @@ -3464,7 +3467,7 @@ HttpTransact::handle_response_from_icp_suggested_host(State *s) // send request to parent proxy now if there is // one or else directly to the origin server. find_server_and_update_current_info(s); - if (!ats_is_ip(&s->current.server->addr)) { + if (!ats_is_ip(&s->current.server->dst_addr)) { if (s->current.request_to == PARENT_PROXY) { TRANSACT_RETURN(SM_ACTION_DNS_LOOKUP, PPDNSLookup); } else { @@ -3528,7 +3531,7 @@ HttpTransact::handle_response_from_parent(State *s) char addrbuf[INET6_ADDRSTRLEN]; DebugTxn("http_trans", "[%d] failed to connect to parent %s", s->current.attempts, - ats_ip_ntop(&s->current.server->addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_ntop(&s->current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); // If the request is not retryable, just give up! if (!is_request_retryable(s)) { @@ -3688,7 +3691,7 @@ HttpTransact::handle_response_from_server(State *s) // Force host resolution to have the same family as the client. // Because this is a transparent connection, we can't switch address // families - that is locked in by the client source address. - s->state_machine->ua_session->host_res_style = ats_host_res_match(&s->current.server->addr.sa); + s->state_machine->ua_session->host_res_style = ats_host_res_match(&s->current.server->dst_addr.sa); TRANSACT_RETURN(SM_ACTION_DNS_LOOKUP, OSDNSLookup); } else if ((s->dns_info.srv_lookup_success || s->server_info.dns_round_robin) && (s->txn_conf->connect_attempts_rr_retries > 0) && @@ -3740,7 +3743,7 @@ HttpTransact::delete_server_rr_entry(State *s, int max_retries) char addrbuf[INET6_ADDRSTRLEN]; DebugTxn("http_trans", "[%d] failed to connect to %s", s->current.attempts, - ats_ip_ntop(&s->current.server->addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_ntop(&s->current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); DebugTxn("http_trans", "[delete_server_rr_entry] marking rr entry " "down and finding next one"); ink_assert(s->current.server->had_connect_fail()); @@ -3776,7 +3779,7 @@ HttpTransact::retry_server_connection_not_open(State *s, ServerState_t conn_stat char *url_string = s->hdr_info.client_request.url_string_get(&s->arena); DebugTxn("http_trans", "[%d] failed to connect [%d] to %s", s->current.attempts, conn_state, - ats_ip_ntop(&s->current.server->addr.sa, addrbuf, sizeof(addrbuf))); + ats_ip_ntop(&s->current.server->dst_addr.sa, addrbuf, sizeof(addrbuf))); ////////////////////////////////////////// // on the first connect attempt failure // @@ -3785,7 +3788,7 @@ HttpTransact::retry_server_connection_not_open(State *s, ServerState_t conn_stat if (0 == s->current.attempts) Log::error("CONNECT:[%d] could not connect [%s] to %s for '%s'", s->current.attempts, HttpDebugNames::get_server_state_name(conn_state), - ats_ip_ntop(&s->current.server->addr.sa, addrbuf, sizeof(addrbuf)), url_string ? url_string : "<none>"); + ats_ip_ntop(&s->current.server->dst_addr.sa, addrbuf, sizeof(addrbuf)), url_string ? url_string : "<none>"); if (url_string) { s->arena.str_free(url_string); @@ -3951,7 +3954,8 @@ HttpTransact::handle_forward_server_connection_open(State *s) s->api_server_response_ignore = true; } // s->cache_info.action = CACHE_PREPARE_TO_SERVE; - // xing xing in the tunneling case, need to check when the cache_read_vc is closed, make sure the cache_read_vc is closed right + // xing xing in the tunneling case, need to check when the cache_read_vc is closed, make sure the cache_read_vc is closed + // right // away } @@ -5152,11 +5156,11 @@ HttpTransact::add_client_ip_to_outgoing_request(State *s, HTTPHdr *request) char ip_string[INET6_ADDRSTRLEN + 1] = {'\0'}; size_t ip_string_size = 0; - if (!ats_is_ip(&s->client_info.addr.sa)) + if (!ats_is_ip(&s->client_info.src_addr.sa)) return; // Always prepare the IP string. - if (ats_ip_ntop(&s->client_info.addr.sa, ip_string, sizeof(ip_string)) != NULL) { + if (ats_ip_ntop(&s->client_info.src_addr.sa, ip_string, sizeof(ip_string)) != NULL) { ip_string_size += strlen(ip_string); } else { // Failure, omg @@ -5520,13 +5524,12 @@ void HttpTransact::initialize_state_variables_for_origin_server(State *s, HTTPHdr *incoming_request, bool second_time) { if (s->server_info.name && !second_time) { - ink_assert(s->server_info.port != 0); + ink_assert(s->server_info.dst_addr.port() != 0); } int host_len; const char *host = incoming_request->host_get(&host_len); s->server_info.name = s->arena.str_store(host, host_len); - s->server_info.port = incoming_request->port_get(); if (second_time) { s->dns_info.attempts = 0; @@ -5589,7 +5592,6 @@ HttpTransact::initialize_state_variables_from_request(State *s, HTTPHdr *obsolet if (!s->server_info.name || s->redirect_info.redirect_in_process) { s->server_info.name = s->arena.str_store(host_name, host_len); - s->server_info.port = incoming_request->port_get(); } s->next_hop_scheme = s->scheme = incoming_request->url_get()->scheme_get_wksidx(); @@ -5656,7 +5658,7 @@ HttpTransact::initialize_state_variables_from_request(State *s, HTTPHdr *obsolet s->request_data.hdr = &s->hdr_info.client_request; s->request_data.hostname_str = s->arena.str_store(host_name, host_len); - ats_ip_copy(&s->request_data.src_ip, &s->client_info.addr); + ats_ip_copy(&s->request_data.src_ip, &s->client_info.src_addr); memset(&s->request_data.dest_ip, 0, sizeof(s->request_data.dest_ip)); if (s->state_machine->ua_session) { s->request_data.incoming_port = s->state_machine->ua_session->get_netvc()->get_local_port(); @@ -6528,7 +6530,7 @@ HttpTransact::process_quick_http_filter(State *s, int method) if (deny_request) { if (is_debug_tag_set("ip-allow")) { ip_text_buffer ipb; - Debug("ip-allow", "Quick filter denial on %s:%s with mask %x", ats_ip_ntop(&s->client_info.addr.sa, ipb, sizeof(ipb)), + Debug("ip-allow", "Quick filter denial on %s:%s with mask %x", ats_ip_ntop(&s->client_info.src_addr.sa, ipb, sizeof(ipb)), hdrtoken_index_to_wks(method), acl_record ? acl_record->_method_mask : 0x0); } s->client_connection_enabled = false; @@ -6603,8 +6605,8 @@ HttpTransact::will_this_request_self_loop(State *s) //////////////////////////////////////// if (s->dns_info.lookup_success) { if (ats_ip_addr_eq(s->host_db_info.ip(), &Machine::instance()->ip.sa)) { - uint16_t host_port = s->hdr_info.client_request.url_get()->port_get(); - uint16_t local_port = ats_ip_port_host_order(&s->client_info.addr); + in_port_t host_port = s->hdr_info.client_request.url_get()->port_get(); + in_port_t local_port = s->client_info.src_addr.host_order_port(); if (host_port == local_port) { switch (s->dns_info.looking_up) { case ORIGIN_SERVER: @@ -8183,7 +8185,7 @@ HttpTransact::build_error_response(State *s, HTTPStatus status_code, const char if (s->http_config_param->errors_log_error_pages && status_code >= HTTP_STATUS_BAD_REQUEST) { char ip_string[INET6_ADDRSTRLEN]; - Log::error("RESPONSE: sent %s status %d (%s) for '%s'", ats_ip_ntop(&s->client_info.addr.sa, ip_string, sizeof(ip_string)), + Log::error("RESPONSE: sent %s status %d (%s) for '%s'", ats_ip_ntop(&s->client_info.src_addr.sa, ip_string, sizeof(ip_string)), status_code, reason_phrase, (url_string ? url_string : "<none>")); } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/http/HttpTransact.h ---------------------------------------------------------------------- diff --git a/proxy/http/HttpTransact.h b/proxy/http/HttpTransact.h index fa64940..e33bc7f 100644 --- a/proxy/http/HttpTransact.h +++ b/proxy/http/HttpTransact.h @@ -654,16 +654,15 @@ public: bool dns_round_robin; TransferEncoding_t transfer_encoding; - IpEndpoint addr; // replaces 'ip' field - - // port to connect to, except for client - // connection where it is port on proxy - // that client connected to. - // This field is managed separately from the port - // part of 'addr' above as in various cases the two - // are set/manipulated independently and things are - // clearer this way. - uint16_t port; // host order. + /** This is the source address of the connection from the point of view of the transaction. + It is the address of the source of the request. + */ + IpEndpoint src_addr; + /** This is the destination address of the connection from the point of view of the transaction. + It is the address of the target of the request. + */ + IpEndpoint dst_addr; + ServerState_t state; AbortState_t abort; HttpProxyPort::TransportType port_attribute; @@ -690,10 +689,10 @@ public: ConnectionAttributes() : http_version(), keep_alive(HTTP_KEEPALIVE_UNDEFINED), receive_chunked_response(false), pipeline_possible(false), proxy_connect_hdr(false), connect_result(0), name(NULL), dns_round_robin(false), transfer_encoding(NO_TRANSFER_ENCODING), - port(0), state(STATE_UNDEFINED), abort(ABORT_UNDEFINED), port_attribute(HttpProxyPort::TRANSPORT_DEFAULT), - is_transparent(false) + state(STATE_UNDEFINED), abort(ABORT_UNDEFINED), port_attribute(HttpProxyPort::TRANSPORT_DEFAULT), is_transparent(false) { - memset(&addr, 0, sizeof(addr)); + memset(&src_addr, 0, sizeof(src_addr)); + memset(&dst_addr, 0, sizeof(dst_addr)); } }; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/http/HttpUpdateSM.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpUpdateSM.cc b/proxy/http/HttpUpdateSM.cc index 7e14ecc..e90927d 100644 --- a/proxy/http/HttpUpdateSM.cc +++ b/proxy/http/HttpUpdateSM.cc @@ -74,7 +74,7 @@ HttpUpdateSM::start_scheduled_update(Continuation *cont, HTTPHdr *request) // Fix ME: What should these be set to since there is not a // real client - ats_ip4_set(&t_state.client_info.addr, htonl(INADDR_LOOPBACK), 0); + ats_ip4_set(&t_state.client_info.src_addr, htonl(INADDR_LOOPBACK), 0); t_state.backdoor_request = 0; t_state.client_info.port_attribute = HttpProxyPort::TRANSPORT_DEFAULT; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/http/remap/RemapProcessor.cc ---------------------------------------------------------------------- diff --git a/proxy/http/remap/RemapProcessor.cc b/proxy/http/remap/RemapProcessor.cc index 3c47cb4..1c1e029 100644 --- a/proxy/http/remap/RemapProcessor.cc +++ b/proxy/http/remap/RemapProcessor.cc @@ -87,9 +87,9 @@ RemapProcessor::setup_for_remap(HttpTransact::State *s) Debug("url_rewrite", "[lookup] attempting %s lookup", proxy_request ? "proxy" : "normal"); if (rewrite_table->num_rules_forward_with_recv_port) { - Debug("url_rewrite", "[lookup] forward mappings with recv port found; Using recv port %d", s->client_info.port); - if (rewrite_table->forwardMappingWithRecvPortLookup(request_url, s->client_info.port, request_host, request_host_len, - s->url_map)) { + Debug("url_rewrite", "[lookup] forward mappings with recv port found; Using recv port %d", s->client_info.src_addr.port()); + if (rewrite_table->forwardMappingWithRecvPortLookup(request_url, s->client_info.src_addr.host_order_port(), request_host, + request_host_len, s->url_map)) { Debug("url_rewrite", "Found forward mapping with recv port"); mapping_found = true; } else if (rewrite_table->num_rules_forward == 0) { http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/http/remap/UrlRewrite.cc ---------------------------------------------------------------------- diff --git a/proxy/http/remap/UrlRewrite.cc b/proxy/http/remap/UrlRewrite.cc index 0cf66f7..b74171c 100644 --- a/proxy/http/remap/UrlRewrite.cc +++ b/proxy/http/remap/UrlRewrite.cc @@ -388,7 +388,7 @@ UrlRewrite::PerformACLFiltering(HttpTransact::State *s, url_mapping *map) int method_wksidx = (method != -1) ? (method - HTTP_WKSIDX_CONNECT) : -1; bool client_enabled_flag = true; - ink_release_assert(ats_is_ip(&s->client_info.addr)); + ink_release_assert(ats_is_ip(&s->client_info.src_addr)); for (acl_filter_rule *rp = map->filter; rp && client_enabled_flag; rp = rp->next) { bool match = true; @@ -406,7 +406,7 @@ UrlRewrite::PerformACLFiltering(HttpTransact::State *s, url_mapping *map) if (match && rp->src_ip_valid) { match = false; for (int j = 0; j < rp->src_ip_cnt && !match; j++) { - bool in_range = rp->src_ip_array[j].contains(s->client_info.addr); + bool in_range = rp->src_ip_array[j].contains(s->client_info.src_addr); if (rp->src_ip_array[j].invert) { if (!in_range) { match = true; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/078a9a8c/proxy/logging/LogAccessHttp.cc ---------------------------------------------------------------------- diff --git a/proxy/logging/LogAccessHttp.cc b/proxy/logging/LogAccessHttp.cc index f5fc802..4b46475 100644 --- a/proxy/logging/LogAccessHttp.cc +++ b/proxy/logging/LogAccessHttp.cc @@ -234,7 +234,7 @@ LogAccessHttp::marshal_plugin_identity_tag(char *buf) int LogAccessHttp::marshal_client_host_ip(char *buf) { - return marshal_ip(buf, &m_http_sm->t_state.client_info.addr.sa); + return marshal_ip(buf, &m_http_sm->t_state.client_info.src_addr.sa); } /*------------------------------------------------------------------------- @@ -260,7 +260,7 @@ int LogAccessHttp::marshal_client_host_port(char *buf) { if (buf) { - uint16_t port = ntohs(m_http_sm->t_state.client_info.addr.port()); + uint16_t port = ntohs(m_http_sm->t_state.client_info.src_addr.port()); marshal_int(buf, port); } return INK_MIN_ALIGN; @@ -824,7 +824,7 @@ LogAccessHttp::marshal_proxy_req_server_name(char *buf) int LogAccessHttp::marshal_proxy_req_server_ip(char *buf) { - return marshal_ip(buf, m_http_sm->t_state.current.server != NULL ? &m_http_sm->t_state.current.server->addr.sa : 0); + return marshal_ip(buf, m_http_sm->t_state.current.server != NULL ? &m_http_sm->t_state.current.server->dst_addr.sa : 0); } /*------------------------------------------------------------------------- @@ -848,10 +848,10 @@ int LogAccessHttp::marshal_server_host_ip(char *buf) { sockaddr const *ip = 0; - ip = &m_http_sm->t_state.server_info.addr.sa; + ip = &m_http_sm->t_state.server_info.dst_addr.sa; if (!ats_is_ip(ip)) { if (m_http_sm->t_state.current.server) { - ip = &m_http_sm->t_state.current.server->addr.sa; + ip = &m_http_sm->t_state.current.server->dst_addr.sa; if (!ats_is_ip(ip)) ip = 0; } else {
