You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2017/10/04 20:02:59 UTC
[trafficserver] branch quic-latest updated: Print hq and quic to
Via header
This is an automated email from the ASF dual-hosted git repository.
maskit pushed a commit to branch quic-latest
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/quic-latest by this push:
new b0df673 Print hq and quic to Via header
b0df673 is described below
commit b0df673a64bcd9df284f48886ed388272679a1ca
Author: Masakazu Kitajo <ma...@apache.org>
AuthorDate: Wed Oct 4 13:00:08 2017 -0700
Print hq and quic to Via header
---
iocore/net/P_QUICNetVConnection.h | 3 +++
iocore/net/QUICNetVConnection.cc | 29 +++++++++++++++++++++++++++++
lib/ts/ink_inet.cc | 1 +
lib/ts/ink_inet.h | 1 +
proxy/hq/HQClientSession.cc | 13 +++++++++++++
proxy/hq/HQClientSession.h | 3 +++
6 files changed, 50 insertions(+)
diff --git a/iocore/net/P_QUICNetVConnection.h b/iocore/net/P_QUICNetVConnection.h
index 82b89fc..4c0ed6a 100644
--- a/iocore/net/P_QUICNetVConnection.h
+++ b/iocore/net/P_QUICNetVConnection.h
@@ -166,6 +166,9 @@ public:
virtual void net_read_io(NetHandler *nh, EThread *lthread) override;
virtual int64_t load_buffer_and_write(int64_t towrite, MIOBufferAccessor &buf, int64_t &total_written, int &needs) override;
+ int populate_protocol(ts::StringView *results, int n) const override;
+ const char *protocol_contains(ts::StringView tag) const override;
+
// QUICNetVConnection
void registerNextProtocolSet(SSLNextProtocolSet *s);
diff --git a/iocore/net/QUICNetVConnection.cc b/iocore/net/QUICNetVConnection.cc
index 5962e96..5261450 100644
--- a/iocore/net/QUICNetVConnection.cc
+++ b/iocore/net/QUICNetVConnection.cc
@@ -576,6 +576,35 @@ QUICNetVConnection::load_buffer_and_write(int64_t towrite, MIOBufferAccessor &bu
return 0;
}
+int
+QUICNetVConnection::populate_protocol(ts::StringView *results, int n) const
+{
+ int retval = 0;
+ if (n > retval) {
+ results[retval] = IP_PROTO_TAG_QUIC;
+ if (results[retval]) {
+ ++retval;
+ }
+ if (n > retval) {
+ retval += super::populate_protocol(results + retval, n - retval);
+ }
+ }
+ return retval;
+}
+
+const char *
+QUICNetVConnection::protocol_contains(ts::StringView prefix) const
+{
+ const char *retval = nullptr;
+ ts::StringView tag = IP_PROTO_TAG_QUIC;
+ if (prefix.size() <= tag.size() && strncmp(tag.ptr(), prefix.ptr(), prefix.size()) == 0) {
+ retval = tag.ptr();
+ } else {
+ retval = super::protocol_contains(prefix);
+ }
+ return retval;
+}
+
void
QUICNetVConnection::registerNextProtocolSet(SSLNextProtocolSet *s)
{
diff --git a/lib/ts/ink_inet.cc b/lib/ts/ink_inet.cc
index 2467916..188519a 100644
--- a/lib/ts/ink_inet.cc
+++ b/lib/ts/ink_inet.cc
@@ -36,6 +36,7 @@ const ts::StringView IP_PROTO_TAG_IPV4("ipv4", ts::StringView::literal);
const ts::StringView IP_PROTO_TAG_IPV6("ipv6", ts::StringView::literal);
const ts::StringView IP_PROTO_TAG_UDP("udp", ts::StringView::literal);
const ts::StringView IP_PROTO_TAG_TCP("tcp", ts::StringView::literal);
+const ts::StringView IP_PROTO_TAG_QUIC("quic", ts::StringView::literal);
const ts::StringView IP_PROTO_TAG_TLS_1_0("tls/1.0", ts::StringView::literal);
const ts::StringView IP_PROTO_TAG_TLS_1_1("tls/1.1", ts::StringView::literal);
const ts::StringView IP_PROTO_TAG_TLS_1_2("tls/1.2", ts::StringView::literal);
diff --git a/lib/ts/ink_inet.h b/lib/ts/ink_inet.h
index bca32a0..585eaca 100644
--- a/lib/ts/ink_inet.h
+++ b/lib/ts/ink_inet.h
@@ -50,6 +50,7 @@ extern const ts::StringView IP_PROTO_TAG_IPV4;
extern const ts::StringView IP_PROTO_TAG_IPV6;
extern const ts::StringView IP_PROTO_TAG_UDP;
extern const ts::StringView IP_PROTO_TAG_TCP;
+extern const ts::StringView IP_PROTO_TAG_QUIC;
extern const ts::StringView IP_PROTO_TAG_TLS_1_0;
extern const ts::StringView IP_PROTO_TAG_TLS_1_1;
extern const ts::StringView IP_PROTO_TAG_TLS_1_2;
diff --git a/proxy/hq/HQClientSession.cc b/proxy/hq/HQClientSession.cc
index 27d1961..ce4d6cc 100644
--- a/proxy/hq/HQClientSession.cc
+++ b/proxy/hq/HQClientSession.cc
@@ -124,6 +124,19 @@ HQClientSession::release(ProxyClientTransaction *trans)
return;
}
+int
+HQClientSession::populate_protocol(ts::StringView *result, int size) const
+{
+ int retval = 0;
+ if (size > retval) {
+ result[retval++] = IP_PROTO_TAG_HTTP_QUIC;
+ if (size > retval) {
+ retval += super::populate_protocol(result + retval, size - retval);
+ }
+ }
+ return retval;
+}
+
void
HQClientSession::add_transaction(HQClientTransaction *trans)
{
diff --git a/proxy/hq/HQClientSession.h b/proxy/hq/HQClientSession.h
index b3a4ce4..0eaecc8 100644
--- a/proxy/hq/HQClientSession.h
+++ b/proxy/hq/HQClientSession.h
@@ -29,6 +29,8 @@
class HQClientSession : public ProxyClientSession
{
public:
+ typedef ProxyClientSession super; ///< Parent type.
+
HQClientSession(NetVConnection *vc);
~HQClientSession();
@@ -48,6 +50,7 @@ public:
int get_transact_count() const override;
const char *get_protocol_string() const override;
void release(ProxyClientTransaction *trans) override;
+ int populate_protocol(ts::StringView *result, int size) const override;
// HQClientSession specific methods
void add_transaction(HQClientTransaction *);
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].