From da62afa3b83112af444d6e351b828d9b4dd82d30 Mon Sep 17 00:00:00 2001 From: Saurabh Mohan Date: Wed, 31 Jan 2018 21:17:20 -0800 Subject: [PATCH 1/7] Add few more utility functions for address and http proto's. Signed-off-by: Saurabh Mohan --- include/envoy/http/header_map.h | 10 ++++++++++ include/envoy/http/protocol.h | 15 +++++++++++++++ source/common/network/BUILD | 1 + source/common/network/utility.cc | 12 ++++++++++++ source/common/network/utility.h | 8 ++++++++ test/common/http/header_map_impl_test.cc | 9 +++++++++ 6 files changed, 55 insertions(+) diff --git a/include/envoy/http/header_map.h b/include/envoy/http/header_map.h index 1cc91e35f7564..a420c64121e14 100644 --- a/include/envoy/http/header_map.h +++ b/include/envoy/http/header_map.h @@ -86,6 +86,16 @@ class HeaderString { */ const char* c_str() const { return buffer_.ref_; } + /** + * @return a std::string. + */ + std::string getString() const { + if (string_length_) { + return std::string(buffer_.ref_, string_length_); + } + return ""; + } + /** * Return the string to a default state. Reference strings are not touched. Both inline/dynamic * strings are reset to zero size. diff --git a/include/envoy/http/protocol.h b/include/envoy/http/protocol.h index df026f781750e..e7012fc4b204d 100644 --- a/include/envoy/http/protocol.h +++ b/include/envoy/http/protocol.h @@ -1,4 +1,5 @@ #pragma once +#include namespace Envoy { namespace Http { @@ -10,5 +11,19 @@ namespace Http { enum class Protocol { Http10, Http11, Http2 }; const size_t NumProtocols = 3; +inline std::string getProtocolString(const Protocol& p) { + switch (p) { + case Protocol::Http10: + return std::string("Http1.0"); + case Protocol::Http11: + return std::string("Http1.1"); + case Protocol::Http2: + return std::string("Http2"); + default: + break; + } + return ""; +} + } // namespace Http } // namespace Envoy diff --git a/source/common/network/BUILD b/source/common/network/BUILD index eb9de564cee97..07bcd07b364b7 100644 --- a/source/common/network/BUILD +++ b/source/common/network/BUILD @@ -188,6 +188,7 @@ envoy_cc_library( "//source/common/common:assert_lib", "//source/common/common:utility_lib", "//source/common/protobuf", + "@envoy_api//envoy/api/v2:address_cc", "@envoy_api//envoy/api/v2:base_cc", ], ) diff --git a/source/common/network/utility.cc b/source/common/network/utility.cc index 2bc91edbf6a62..e3482638796d4 100644 --- a/source/common/network/utility.cc +++ b/source/common/network/utility.cc @@ -371,5 +371,17 @@ absl::uint128 Utility::flipOrder(const absl::uint128& input) { return result; } +void Utility::addressToProtobufAddress(const Address::Instance& address, + envoy::api::v2::Address& proto_address) { + if (address.type() == Address::Type::Pipe) { + proto_address.mutable_pipe()->set_path(address.asString()); + } else { + ASSERT(address.type() == Address::Type::Ip); + auto* socket_address = proto_address.mutable_socket_address(); + socket_address->set_address(address.ip()->addressAsString()); + socket_address->set_port_value(address.ip()->port()); + } +} + } // namespace Network } // namespace Envoy diff --git a/source/common/network/utility.h b/source/common/network/utility.h index 16c58530617e5..de176d27b5bdc 100644 --- a/source/common/network/utility.h +++ b/source/common/network/utility.h @@ -201,6 +201,14 @@ class Utility { */ static absl::uint128 Ip6htonl(const absl::uint128& address); + /** + * Copies the address instance into the protobuf representation of an address. + * @param address is the address to be copied into the protobuf representation of this address. + * @param proto_address is the protobuf address to which the address instance is copied into. + */ + static void addressToProtobufAddress(const Address::Instance& address, + envoy::api::v2::Address& proto_address); + private: static void throwWithMalformedIp(const std::string& ip_address); diff --git a/test/common/http/header_map_impl_test.cc b/test/common/http/header_map_impl_test.cc index 4ae84ba208e3e..e553c529ffa10 100644 --- a/test/common/http/header_map_impl_test.cc +++ b/test/common/http/header_map_impl_test.cc @@ -283,6 +283,15 @@ TEST(HeaderStringTest, All) { EXPECT_FALSE(string.caseInsensitiveContains("keep-alive")); EXPECT_FALSE(string.caseInsensitiveContains("")); } + + // getString + { + std::string static_string("HELLO"); + HeaderString headerString(static_string); + std::string retString = headerString.getString(); + EXPECT_EQ("HELLO", retString); + EXPECT_EQ(5U, retString.size()); + } } TEST(HeaderMapImplTest, InlineInsert) { From 858d8424749c2177d55bf35eb082e73f4b74252b Mon Sep 17 00:00:00 2001 From: Saurabh Mohan Date: Wed, 31 Jan 2018 22:28:41 -0800 Subject: [PATCH 2/7] Add more ut. Signed-off-by: Saurabh Mohan --- test/common/http/header_map_impl_test.cc | 12 ++++++++---- test/common/network/utility_test.cc | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/test/common/http/header_map_impl_test.cc b/test/common/http/header_map_impl_test.cc index e553c529ffa10..23937fd6fb25d 100644 --- a/test/common/http/header_map_impl_test.cc +++ b/test/common/http/header_map_impl_test.cc @@ -287,10 +287,14 @@ TEST(HeaderStringTest, All) { // getString { std::string static_string("HELLO"); - HeaderString headerString(static_string); - std::string retString = headerString.getString(); - EXPECT_EQ("HELLO", retString); - EXPECT_EQ(5U, retString.size()); + HeaderString headerString1(static_string); + std::string retString1 = headerString1.getString(); + EXPECT_EQ("HELLO", retString1); + EXPECT_EQ(5U, retString1.size()); + + HeaderString headerString2; + std::string retString2 = headerString2.getString(); + EXPECT_EQ(0U, retString2.size()); } } diff --git a/test/common/network/utility_test.cc b/test/common/network/utility_test.cc index b055fa91f28b8..f0f7dd6cfd588 100644 --- a/test/common/network/utility_test.cc +++ b/test/common/network/utility_test.cc @@ -198,6 +198,21 @@ TEST(NetworkUtility, AnyAddress) { } } +TEST(NetworkUtility, AddressToProtobufAddress) { + { + envoy::api::v2::Address proto_address; + Address::Ipv4Instance address("127.0.0.1"); + Utility::addressToProtobufAddress(address, proto_address); + EXPECT_EQ(true, proto_address.has_socket_address()); + } + { + envoy::api::v2::Address proto_address; + Address::PipeInstance address("/hello"); + Utility::addressToProtobufAddress(address, proto_address); + EXPECT_EQ(false, proto_address.has_socket_address()); + } +} + TEST(PortRangeListTest, Errors) { { std::string port_range_str = "a1"; From ab15cc3e7219a04df5d10f4bccfcfe6f2fccbd8e Mon Sep 17 00:00:00 2001 From: Saurabh Mohan Date: Wed, 31 Jan 2018 22:37:30 -0800 Subject: [PATCH 3/7] Remove if check. Signed-off-by: Saurabh Mohan --- include/envoy/http/header_map.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/include/envoy/http/header_map.h b/include/envoy/http/header_map.h index a420c64121e14..e80b6c9d43f51 100644 --- a/include/envoy/http/header_map.h +++ b/include/envoy/http/header_map.h @@ -89,12 +89,7 @@ class HeaderString { /** * @return a std::string. */ - std::string getString() const { - if (string_length_) { - return std::string(buffer_.ref_, string_length_); - } - return ""; - } + std::string getString() const { return std::string(buffer_.ref_, string_length_); } /** * Return the string to a default state. Reference strings are not touched. Both inline/dynamic From a519fb32b8641edec0d2103a9eaf705cfe2065f0 Mon Sep 17 00:00:00 2001 From: Saurabh Mohan Date: Wed, 31 Jan 2018 23:08:17 -0800 Subject: [PATCH 4/7] Consolidate usage. Signed-off-by: Saurabh Mohan --- include/envoy/http/protocol.h | 15 ++++++--- source/common/access_log/BUILD | 1 + .../common/access_log/access_log_formatter.cc | 13 +------- .../common/access_log/grpc_access_log_impl.cc | 32 +++++++------------ .../common/access_log/grpc_access_log_impl.h | 2 -- 5 files changed, 24 insertions(+), 39 deletions(-) diff --git a/include/envoy/http/protocol.h b/include/envoy/http/protocol.h index e7012fc4b204d..bab47f89b8618 100644 --- a/include/envoy/http/protocol.h +++ b/include/envoy/http/protocol.h @@ -11,18 +11,23 @@ namespace Http { enum class Protocol { Http10, Http11, Http2 }; const size_t NumProtocols = 3; -inline std::string getProtocolString(const Protocol& p) { +static const std::string DefaultString = ""; +static const std::string Http10String = "HTTP/1.0"; +static const std::string Http11String = "HTTP/1.1"; +static const std::string Http2String = "HTTP/2"; + +inline const std::string& getProtocolString(const Protocol& p) { switch (p) { case Protocol::Http10: - return std::string("Http1.0"); + return Http10String; case Protocol::Http11: - return std::string("Http1.1"); + return Http11String; case Protocol::Http2: - return std::string("Http2"); + return Http2String; default: break; } - return ""; + return DefaultString; } } // namespace Http diff --git a/source/common/access_log/BUILD b/source/common/access_log/BUILD index cf2b12f8bdc70..04a2c72bae213 100644 --- a/source/common/access_log/BUILD +++ b/source/common/access_log/BUILD @@ -65,6 +65,7 @@ envoy_cc_library( "//include/envoy/thread_local:thread_local_interface", "//include/envoy/upstream:cluster_manager_interface", "//source/common/grpc:async_client_lib", + "//source/common/network:utility_lib", "@envoy_api//envoy/api/v2/filter/accesslog:accesslog_cc", "@envoy_api//envoy/config/accesslog/v2:als_cc", "@envoy_api//envoy/service/accesslog/v2:als_cc", diff --git a/source/common/access_log/access_log_formatter.cc b/source/common/access_log/access_log_formatter.cc index 63ca14b75ef43..a4baba4035ab1 100644 --- a/source/common/access_log/access_log_formatter.cc +++ b/source/common/access_log/access_log_formatter.cc @@ -26,21 +26,10 @@ FormatterPtr AccessLogFormatUtils::defaultAccessLogFormatter() { return FormatterPtr{new FormatterImpl(DEFAULT_FORMAT)}; } -static const std::string Http10String = "HTTP/1.0"; -static const std::string Http11String = "HTTP/1.1"; -static const std::string Http2String = "HTTP/2"; - const std::string& AccessLogFormatUtils::protocolToString(const Optional& protocol) { if (protocol.valid()) { - switch (protocol.value()) { - case Http::Protocol::Http10: - return Http10String; - case Http::Protocol::Http11: - return Http11String; - case Http::Protocol::Http2: - return Http2String; - } + return Http::getProtocolString(protocol.value()); } else { return UnspecifiedValueString; } diff --git a/source/common/access_log/grpc_access_log_impl.cc b/source/common/access_log/grpc_access_log_impl.cc index 2487cdaa98a00..dc38f81535b5e 100644 --- a/source/common/access_log/grpc_access_log_impl.cc +++ b/source/common/access_log/grpc_access_log_impl.cc @@ -2,6 +2,7 @@ #include "common/common/assert.h" #include "common/http/header_map_impl.h" +#include "common/network/utility.h" namespace Envoy { namespace AccessLog { @@ -64,18 +65,6 @@ HttpGrpcAccessLog::HttpGrpcAccessLog( : filter_(std::move(filter)), config_(config), grpc_access_log_streamer_(grpc_access_log_streamer) {} -void HttpGrpcAccessLog::addressToAccessLogAddress( - envoy::api::v2::Address& proto_address, const Network::Address::Instance& network_address) { - if (network_address.type() == Network::Address::Type::Pipe) { - proto_address.mutable_pipe()->set_path(network_address.asString()); - } else { - ASSERT(network_address.type() == Network::Address::Type::Ip); - auto* socket_address = proto_address.mutable_socket_address(); - socket_address->set_address(network_address.ip()->addressAsString()); - socket_address->set_port_value(network_address.ip()->port()); - } -} - void HttpGrpcAccessLog::responseFlagsToAccessLogResponseFlags( envoy::api::v2::filter::accesslog::AccessLogCommon& common_access_log, const RequestInfo::RequestInfo& request_info) { @@ -161,10 +150,12 @@ void HttpGrpcAccessLog::log(const Http::HeaderMap* request_headers, // TODO(mattklein123): Populate time_to_first_downstream_tx_byte field. // TODO(mattklein123): Populate metadata field and wire up to filters. auto* common_properties = log_entry->mutable_common_properties(); - addressToAccessLogAddress(*common_properties->mutable_downstream_remote_address(), - *request_info.downstreamRemoteAddress()); - addressToAccessLogAddress(*common_properties->mutable_downstream_local_address(), - *request_info.downstreamLocalAddress()); + Network::Utility::addressToProtobufAddress( + *request_info.downstreamRemoteAddress(), + *common_properties->mutable_downstream_remote_address()); + Network::Utility::addressToProtobufAddress( + *request_info.downstreamLocalAddress(), + *common_properties->mutable_downstream_local_address()); common_properties->mutable_start_time()->MergeFrom( Protobuf::util::TimeUtil::MicrosecondsToTimestamp( std::chrono::duration_cast( @@ -183,13 +174,14 @@ void HttpGrpcAccessLog::log(const Http::HeaderMap* request_headers, common_properties->mutable_time_to_last_downstream_tx_byte()->MergeFrom( Protobuf::util::TimeUtil::MicrosecondsToDuration(request_info.duration().count())); if (request_info.upstreamHost() != nullptr) { - addressToAccessLogAddress(*common_properties->mutable_upstream_remote_address(), - *request_info.upstreamHost()->address()); + Network::Utility::addressToProtobufAddress( + *request_info.upstreamHost()->address(), + *common_properties->mutable_upstream_remote_address()); common_properties->set_upstream_cluster(request_info.upstreamHost()->cluster().name()); } if (request_info.upstreamLocalAddress() != nullptr) { - addressToAccessLogAddress(*common_properties->mutable_upstream_local_address(), - *request_info.upstreamLocalAddress()); + Network::Utility::addressToProtobufAddress( + *request_info.upstreamLocalAddress(), *common_properties->mutable_upstream_local_address()); } responseFlagsToAccessLogResponseFlags(*common_properties, request_info); diff --git a/source/common/access_log/grpc_access_log_impl.h b/source/common/access_log/grpc_access_log_impl.h index 4c79b02d65e69..30d2b0d19bcbb 100644 --- a/source/common/access_log/grpc_access_log_impl.h +++ b/source/common/access_log/grpc_access_log_impl.h @@ -114,8 +114,6 @@ class HttpGrpcAccessLog : public Instance { const envoy::config::accesslog::v2::HttpGrpcAccessLogConfig& config, GrpcAccessLogStreamerSharedPtr grpc_access_log_streamer); - static void addressToAccessLogAddress(envoy::api::v2::Address& proto_address, - const Network::Address::Instance& network_address); static void responseFlagsToAccessLogResponseFlags( envoy::api::v2::filter::accesslog::AccessLogCommon& common_access_log, const RequestInfo::RequestInfo& request_info); From 57c6f2606e40d65039cbe9c1d5e673ee7473ac82 Mon Sep 17 00:00:00 2001 From: Saurabh Mohan Date: Thu, 1 Feb 2018 15:30:52 -0800 Subject: [PATCH 5/7] Address review feedback. Signed-off-by: Saurabh Mohan --- include/envoy/http/BUILD | 3 ++ include/envoy/http/protocol.h | 31 ++++++++++++------- .../common/access_log/access_log_formatter.cc | 5 +-- test/common/network/utility_test.cc | 5 ++- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/include/envoy/http/BUILD b/include/envoy/http/BUILD index ea057049e4429..aa360ec817918 100644 --- a/include/envoy/http/BUILD +++ b/include/envoy/http/BUILD @@ -82,4 +82,7 @@ envoy_cc_library( envoy_cc_library( name = "protocol_interface", hdrs = ["protocol.h"], + deps = [ + "//source/common/singleton:const_singleton", + ], ) diff --git a/include/envoy/http/protocol.h b/include/envoy/http/protocol.h index bab47f89b8618..75bb145be71dc 100644 --- a/include/envoy/http/protocol.h +++ b/include/envoy/http/protocol.h @@ -1,6 +1,8 @@ #pragma once #include +#include "common/singleton/const_singleton.h" + namespace Envoy { namespace Http { @@ -11,23 +13,30 @@ namespace Http { enum class Protocol { Http10, Http11, Http2 }; const size_t NumProtocols = 3; -static const std::string DefaultString = ""; -static const std::string Http10String = "HTTP/1.0"; -static const std::string Http11String = "HTTP/1.1"; -static const std::string Http2String = "HTTP/2"; +class ProtocolVal { +public: + struct { + const std::string Http10String{"HTTP/1.0"}; + const std::string Http11String{"HTTP/1.1"}; + const std::string Http2String{"HTTP/2"}; + } ProtocolStrings; +}; + +typedef ConstSingleton ProtocolValues; -inline const std::string& getProtocolString(const Protocol& p) { +inline const std::string& getProtocolString(const Protocol p) { switch (p) { case Protocol::Http10: - return Http10String; + return ProtocolValues::get().ProtocolStrings.Http10String; case Protocol::Http11: - return Http11String; + return ProtocolValues::get().ProtocolStrings.Http11String; case Protocol::Http2: - return Http2String; - default: - break; + return ProtocolValues::get().ProtocolStrings.Http2String; } - return DefaultString; + + // equivalet of NOT_REACHED, + // which we cannot use here as that causes a circular dependency. + abort(); } } // namespace Http diff --git a/source/common/access_log/access_log_formatter.cc b/source/common/access_log/access_log_formatter.cc index a4baba4035ab1..432268ae4a993 100644 --- a/source/common/access_log/access_log_formatter.cc +++ b/source/common/access_log/access_log_formatter.cc @@ -30,11 +30,8 @@ const std::string& AccessLogFormatUtils::protocolToString(const Optional& protocol) { if (protocol.valid()) { return Http::getProtocolString(protocol.value()); - } else { - return UnspecifiedValueString; } - - NOT_REACHED; + return UnspecifiedValueString; } FormatterImpl::FormatterImpl(const std::string& format) { diff --git a/test/common/network/utility_test.cc b/test/common/network/utility_test.cc index f0f7dd6cfd588..be1b19517724c 100644 --- a/test/common/network/utility_test.cc +++ b/test/common/network/utility_test.cc @@ -204,12 +204,15 @@ TEST(NetworkUtility, AddressToProtobufAddress) { Address::Ipv4Instance address("127.0.0.1"); Utility::addressToProtobufAddress(address, proto_address); EXPECT_EQ(true, proto_address.has_socket_address()); + EXPECT_EQ("127.0.0.1", proto_address.socket_address().address()); + EXPECT_EQ(0, proto_address.socket_address().port_value()); } { envoy::api::v2::Address proto_address; Address::PipeInstance address("/hello"); Utility::addressToProtobufAddress(address, proto_address); - EXPECT_EQ(false, proto_address.has_socket_address()); + EXPECT_EQ(true, proto_address.has_pipe()); + EXPECT_EQ("/hello", proto_address.pipe().path()); } } From e4156e87c16bc1e1a76de6767ec0939e1e08b530 Mon Sep 17 00:00:00 2001 From: Saurabh Mohan Date: Thu, 1 Feb 2018 17:09:45 -0800 Subject: [PATCH 6/7] Move protocol string to headers and access via utility. Signed-off-by: Saurabh Mohan --- include/envoy/http/BUILD | 3 -- include/envoy/http/protocol.h | 28 ------------------- source/common/access_log/BUILD | 1 + .../common/access_log/access_log_formatter.cc | 3 +- source/common/http/headers.h | 6 ++++ source/common/http/utility.cc | 13 +++++++++ source/common/http/utility.h | 7 +++++ 7 files changed, 29 insertions(+), 32 deletions(-) diff --git a/include/envoy/http/BUILD b/include/envoy/http/BUILD index aa360ec817918..ea057049e4429 100644 --- a/include/envoy/http/BUILD +++ b/include/envoy/http/BUILD @@ -82,7 +82,4 @@ envoy_cc_library( envoy_cc_library( name = "protocol_interface", hdrs = ["protocol.h"], - deps = [ - "//source/common/singleton:const_singleton", - ], ) diff --git a/include/envoy/http/protocol.h b/include/envoy/http/protocol.h index 75bb145be71dc..0654eed4a259e 100644 --- a/include/envoy/http/protocol.h +++ b/include/envoy/http/protocol.h @@ -1,8 +1,6 @@ #pragma once #include -#include "common/singleton/const_singleton.h" - namespace Envoy { namespace Http { @@ -13,31 +11,5 @@ namespace Http { enum class Protocol { Http10, Http11, Http2 }; const size_t NumProtocols = 3; -class ProtocolVal { -public: - struct { - const std::string Http10String{"HTTP/1.0"}; - const std::string Http11String{"HTTP/1.1"}; - const std::string Http2String{"HTTP/2"}; - } ProtocolStrings; -}; - -typedef ConstSingleton ProtocolValues; - -inline const std::string& getProtocolString(const Protocol p) { - switch (p) { - case Protocol::Http10: - return ProtocolValues::get().ProtocolStrings.Http10String; - case Protocol::Http11: - return ProtocolValues::get().ProtocolStrings.Http11String; - case Protocol::Http2: - return ProtocolValues::get().ProtocolStrings.Http2String; - } - - // equivalet of NOT_REACHED, - // which we cannot use here as that causes a circular dependency. - abort(); -} - } // namespace Http } // namespace Envoy diff --git a/source/common/access_log/BUILD b/source/common/access_log/BUILD index 04a2c72bae213..49f557ef39e4c 100644 --- a/source/common/access_log/BUILD +++ b/source/common/access_log/BUILD @@ -17,6 +17,7 @@ envoy_cc_library( "//include/envoy/request_info:request_info_interface", "//source/common/common:assert_lib", "//source/common/common:utility_lib", + "//source/common/http:utility_lib", "//source/common/request_info:utility_lib", ], ) diff --git a/source/common/access_log/access_log_formatter.cc b/source/common/access_log/access_log_formatter.cc index 432268ae4a993..14b83fd949032 100644 --- a/source/common/access_log/access_log_formatter.cc +++ b/source/common/access_log/access_log_formatter.cc @@ -6,6 +6,7 @@ #include "common/common/assert.h" #include "common/common/utility.h" +#include "common/http/utility.h" #include "common/request_info/utility.h" #include "fmt/format.h" @@ -29,7 +30,7 @@ FormatterPtr AccessLogFormatUtils::defaultAccessLogFormatter() { const std::string& AccessLogFormatUtils::protocolToString(const Optional& protocol) { if (protocol.valid()) { - return Http::getProtocolString(protocol.value()); + return Http::Utility::getProtocolString(protocol.value()); } return UnspecifiedValueString; } diff --git a/source/common/http/headers.h b/source/common/http/headers.h index 67be3e9cfa11b..9e3faecb6324f 100644 --- a/source/common/http/headers.h +++ b/source/common/http/headers.h @@ -177,6 +177,12 @@ class HeaderValues { struct { const std::string True{"true"}; } CORSValues; + + struct { + const std::string Http10String{"HTTP/1.0"}; + const std::string Http11String{"HTTP/1.1"}; + const std::string Http2String{"HTTP/2"}; + } ProtocolStrings; }; typedef ConstSingleton Headers; diff --git a/source/common/http/utility.cc b/source/common/http/utility.cc index 56735405477f5..adeed17779b09 100644 --- a/source/common/http/utility.cc +++ b/source/common/http/utility.cc @@ -272,5 +272,18 @@ Utility::getLastAddressFromXFF(const Http::HeaderMap& request_headers) { } } +const std::string& Utility::getProtocolString(const Protocol p) { + switch (p) { + case Protocol::Http10: + return Headers::get().ProtocolStrings.Http10String; + case Protocol::Http11: + return Headers::get().ProtocolStrings.Http11String; + case Protocol::Http2: + return Headers::get().ProtocolStrings.Http2String; + } + + NOT_REACHED; +} + } // namespace Http } // namespace Envoy diff --git a/source/common/http/utility.h b/source/common/http/utility.h index 323a37e61cd7b..27e33bccdbc84 100644 --- a/source/common/http/utility.h +++ b/source/common/http/utility.h @@ -153,6 +153,13 @@ class Utility { * @see GetLastAddressFromXffInfo for more information. */ static GetLastAddressFromXffInfo getLastAddressFromXFF(const Http::HeaderMap& request_headers); + + /** + * Get the string for the given http protocol. + * @param protocol for which to return the string representation. + * @return string representation of the protocol. + */ + static const std::string& getProtocolString(const Protocol p); }; } // namespace Http From 49a3570f8ca20f62155d10b543a48509152272c9 Mon Sep 17 00:00:00 2001 From: Saurabh Mohan Date: Thu, 1 Feb 2018 18:47:03 -0800 Subject: [PATCH 7/7] Review comments. Signed-off-by: Saurabh Mohan --- include/envoy/http/protocol.h | 1 - source/common/http/utility.cc | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/include/envoy/http/protocol.h b/include/envoy/http/protocol.h index 0654eed4a259e..df026f781750e 100644 --- a/include/envoy/http/protocol.h +++ b/include/envoy/http/protocol.h @@ -1,5 +1,4 @@ #pragma once -#include namespace Envoy { namespace Http { diff --git a/source/common/http/utility.cc b/source/common/http/utility.cc index adeed17779b09..fede975a42d9e 100644 --- a/source/common/http/utility.cc +++ b/source/common/http/utility.cc @@ -272,8 +272,8 @@ Utility::getLastAddressFromXFF(const Http::HeaderMap& request_headers) { } } -const std::string& Utility::getProtocolString(const Protocol p) { - switch (p) { +const std::string& Utility::getProtocolString(const Protocol protocol) { + switch (protocol) { case Protocol::Http10: return Headers::get().ProtocolStrings.Http10String; case Protocol::Http11: