TS-2464: Remove useless and buggy connection header handling
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/1ef60098 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/1ef60098 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/1ef60098 Branch: refs/heads/5.0.x Commit: 1ef60098387c4e14ae0d75454e47f13815aa94bb Parents: 3be2c67 Author: Uri Shachar <ushac...@apache.org> Authored: Wed Jan 1 01:30:59 2014 +0200 Committer: Uri Shachar <ushac...@apache.org> Committed: Wed Jan 1 01:30:59 2014 +0200 ---------------------------------------------------------------------- CHANGES | 2 + proxy/http/HttpTransact.cc | 2 - proxy/http/HttpTransactHeaders.cc | 70 ---------------------------------- proxy/http/HttpTransactHeaders.h | 6 --- 4 files changed, 2 insertions(+), 78 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1ef60098/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 603ba4b..8599e7d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ -*- coding: utf-8 -*- Changes with Apache Traffic Server 4.2.0 + *) [TS-2464] Remove useless and buggy connection header handling + *) [TS-2457] Protocol.c: change usage of atoi to strtol. Author: Radim Kolar <h...@sendmail.cz> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1ef60098/proxy/http/HttpTransact.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc index 0fa2974..14207f0 100644 --- a/proxy/http/HttpTransact.cc +++ b/proxy/http/HttpTransact.cc @@ -7541,7 +7541,6 @@ HttpTransact::build_request(State* s, HTTPHdr* base_request, HTTPHdr* outgoing_r HttpTransactHeaders::copy_header_fields(base_request, outgoing_request, s->txn_conf->fwd_proxy_auth_to_parent); add_client_ip_to_outgoing_request(s, outgoing_request); - HttpTransactHeaders::process_connection_headers(base_request, outgoing_request); HttpTransactHeaders::remove_privacy_headers_from_request(s->http_config_param, s->txn_conf, outgoing_request); HttpTransactHeaders::add_global_user_agent_header_to_request(s->http_config_param, outgoing_request); handle_request_keep_alive_headers(s, outgoing_version, outgoing_request); @@ -7664,7 +7663,6 @@ HttpTransact::build_response(State* s, HTTPHdr* base_response, HTTPHdr* outgoing } else { if ((status_code == HTTP_STATUS_NONE) || (status_code == base_response->status_get())) { HttpTransactHeaders::copy_header_fields(base_response, outgoing_response, s->txn_conf->fwd_proxy_auth_to_parent); - HttpTransactHeaders::process_connection_headers(base_response, outgoing_response); if (s->txn_conf->insert_age_in_response) HttpTransactHeaders::insert_time_and_age_headers_in_response(s->request_sent_time, s->response_received_time, http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1ef60098/proxy/http/HttpTransactHeaders.cc ---------------------------------------------------------------------- diff --git a/proxy/http/HttpTransactHeaders.cc b/proxy/http/HttpTransactHeaders.cc index 06cd98f..7c9a3e6 100644 --- a/proxy/http/HttpTransactHeaders.cc +++ b/proxy/http/HttpTransactHeaders.cc @@ -971,76 +971,6 @@ HttpTransactHeaders::insert_basic_realm_in_proxy_authenticate(const char *realm, } -inline void -HttpTransactHeaders::process_connection_field_in_outgoing_header(HTTPHdr *base, HTTPHdr *header) -{ - _process_xxx_connection_field_in_outgoing_header(MIME_FIELD_CONNECTION, MIME_LEN_CONNECTION, base, header); -} - -inline void -HttpTransactHeaders::process_proxy_connection_field_in_outgoing_header(HTTPHdr *base, HTTPHdr *header) -{ - _process_xxx_connection_field_in_outgoing_header(MIME_FIELD_PROXY_CONNECTION, MIME_LEN_PROXY_CONNECTION, base, header); -} - - -void -HttpTransactHeaders::process_connection_headers(HTTPHdr *base, HTTPHdr *outgoing) -{ - process_connection_field_in_outgoing_header(base, outgoing); - process_proxy_connection_field_in_outgoing_header(base, outgoing); -} - - -void -HttpTransactHeaders::_process_xxx_connection_field_in_outgoing_header(const char *wks_field_name, - int wks_field_name_len, - HTTPHdr *base, HTTPHdr *header) -{ - MIMEField *con_hdr; - con_hdr = base->field_find(wks_field_name, wks_field_name_len); - - if (con_hdr) { - int val_len; - const char *val; - - if (!con_hdr->has_dups()) { // try fastpath first - val = con_hdr->value_get(&val_len); - if ((ptr_len_casecmp(val, val_len, "keep-alive", 10) == 0) || (ptr_len_casecmp(val, val_len, "close", 5) == 0)) { - return; - } - } - { - HdrCsvIter iter; - val = iter.get_first(con_hdr, &val_len); - - while (val) { - - const char *wks = hdrtoken_string_to_wks(val, val_len); - if (wks) { - if ((wks != HTTP_VALUE_KEEP_ALIVE) && (wks != HTTP_VALUE_CLOSE) && - (wks != MIME_FIELD_HOST) && (wks != MIME_FIELD_DATE)) { - int wks_length = hdrtoken_wks_to_length(wks); - header->field_delete(wks, wks_length); - } - } else { - // the following are needed to delete non-standard HTTP headers. - MIMEHdrImpl *m_hdr_impl = header->m_http->m_fields_impl; - MIMEField *hdr_to_remove; - - // The specified header is not a standard HTTP header. - hdr_to_remove = _mime_hdr_field_list_search_by_string(m_hdr_impl, val, val_len); - if (hdr_to_remove) - header->field_delete(hdr_to_remove); - } - - val = iter.get_next(&val_len); - } - } - } -} - - void HttpTransactHeaders::remove_conditional_headers(HTTPHdr *outgoing) { http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1ef60098/proxy/http/HttpTransactHeaders.h ---------------------------------------------------------------------- diff --git a/proxy/http/HttpTransactHeaders.h b/proxy/http/HttpTransactHeaders.h index fd61bf1..8dbbdab 100644 --- a/proxy/http/HttpTransactHeaders.h +++ b/proxy/http/HttpTransactHeaders.h @@ -77,12 +77,6 @@ public: static void insert_basic_realm_in_proxy_authenticate(const char *realm, HTTPHdr * header, bool bRevPrxy); - static void process_connection_headers(HTTPHdr * base, HTTPHdr * outgoing); - static void process_connection_field_in_outgoing_header(HTTPHdr * base, HTTPHdr * header); - static void process_proxy_connection_field_in_outgoing_header(HTTPHdr * base, HTTPHdr * header); - static void _process_xxx_connection_field_in_outgoing_header(const char *wks_field_name, int wks_field_name_len, - HTTPHdr * base, HTTPHdr * header); - static void remove_conditional_headers(HTTPHdr * outgoing); static void remove_host_name_from_url(HTTPHdr * outgoing_request); static void add_global_user_agent_header_to_request(HttpConfigParams *http_config_param, HTTPHdr * header);