You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by sh...@apache.org on 2015/07/10 14:09:14 UTC

trafficserver git commit: [TS-3476] Add a log tag for application protocol. This closes #244.

Repository: trafficserver
Updated Branches:
  refs/heads/master 6e3ce5022 -> 1a5624162


[TS-3476] Add a log tag for application protocol.  This closes #244.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/1a562416
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/1a562416
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/1a562416

Branch: refs/heads/master
Commit: 1a56241621a6a06b30e8a91eb170bf633e77951b
Parents: 6e3ce50
Author: ericcarlschwartz <es...@gmail.com>
Authored: Mon Jul 6 15:14:56 2015 -0700
Committer: shinrich <sh...@yahoo-inc.com>
Committed: Fri Jul 10 07:08:20 2015 -0500

----------------------------------------------------------------------
 proxy/FetchSM.cc                  |  2 +-
 proxy/http2/Http2ClientSession.cc | 12 +++++++++++
 proxy/http2/Http2ClientSession.h  |  5 ++++-
 proxy/logging/Log.cc              |  5 +++++
 proxy/logging/LogAccess.cc        |  9 +++++++++
 proxy/logging/LogAccess.h         |  1 +
 proxy/logging/LogAccessHttp.cc    | 37 ++++++++++++++++++++++++++++++++++
 proxy/logging/LogAccessHttp.h     |  1 +
 proxy/spdy/SpdyClientSession.h    |  2 +-
 9 files changed, 71 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/FetchSM.cc
----------------------------------------------------------------------
diff --git a/proxy/FetchSM.cc b/proxy/FetchSM.cc
index 3fd726c..1942202 100644
--- a/proxy/FetchSM.cc
+++ b/proxy/FetchSM.cc
@@ -63,7 +63,7 @@ FetchSM::httpConnect()
   char const *tag = pi ? pi->getPluginTag() : "fetchSM";
   int64_t id = pi ? pi->getPluginId() : 0;
 
-  Debug(DEBUG_TAG, "[%s] calling httpconnect write", __FUNCTION__);
+  Debug(DEBUG_TAG, "[%s] calling httpconnect write pi=%p tag=%s id=%d", __FUNCTION__, pi, tag, id);
   http_vc = reinterpret_cast<PluginVC *>(TSHttpConnectWithPluginId(&_addr.sa, tag, id));
 
   /*

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/http2/Http2ClientSession.cc
----------------------------------------------------------------------
diff --git a/proxy/http2/Http2ClientSession.cc b/proxy/http2/Http2ClientSession.cc
index 93c7e3c..32445f8 100644
--- a/proxy/http2/Http2ClientSession.cc
+++ b/proxy/http2/Http2ClientSession.cc
@@ -391,3 +391,15 @@ Http2ClientSession::state_complete_frame_read(int event, void *edata)
   vio->reenable();
   return 0;
 }
+
+int64_t
+Http2ClientSession::getPluginId() const
+{
+    return con_id;
+}
+
+char const*
+Http2ClientSession::getPluginTag() const
+{
+    return "http/2";
+}

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/http2/Http2ClientSession.h
----------------------------------------------------------------------
diff --git a/proxy/http2/Http2ClientSession.h b/proxy/http2/Http2ClientSession.h
index 5e3ab23..e7e0aa1 100644
--- a/proxy/http2/Http2ClientSession.h
+++ b/proxy/http2/Http2ClientSession.h
@@ -25,6 +25,7 @@
 #define __HTTP2_CLIENT_SESSION_H__
 
 #include "HTTP2.h"
+#include "Plugin.h"
 #include "ProxyClientSession.h"
 #include "Http2ConnectionState.h"
 
@@ -143,7 +144,7 @@ private:
   } hdr;
 };
 
-class Http2ClientSession : public ProxyClientSession
+class Http2ClientSession : public ProxyClientSession, public PluginIdentity
 {
 public:
   typedef ProxyClientSession super; ///< Parent type.
@@ -198,6 +199,8 @@ public:
     return upgrade_context;
   }
 
+  virtual char const* getPluginTag() const;
+  virtual int64_t getPluginId() const;
 
 private:
   Http2ClientSession(Http2ClientSession &);                  // noncopyable

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/logging/Log.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/Log.cc b/proxy/logging/Log.cc
index f565ea0..23a6c84 100644
--- a/proxy/logging/Log.cc
+++ b/proxy/logging/Log.cc
@@ -439,6 +439,11 @@ Log::init_fields()
   global_field_list.add(field, false);
   ink_hash_table_insert(field_symbol_hash, "cqhv", field);
 
+  field = new LogField("client_req_protocol_version", "cqpv", LogField::dINT, &LogAccess::marshal_client_req_protocol_version,
+                       (LogField::UnmarshalFunc) &LogAccess::unmarshal_str);
+  global_field_list.add(field, false);
+  ink_hash_table_insert(field_symbol_hash, "cqpv", field);
+
   field = new LogField("client_req_header_len", "cqhl", LogField::sINT, &LogAccess::marshal_client_req_header_len,
                        &LogAccess::unmarshal_int_to_str);
   global_field_list.add(field, false);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/logging/LogAccess.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccess.cc b/proxy/logging/LogAccess.cc
index 24fa519..65c71f8 100644
--- a/proxy/logging/LogAccess.cc
+++ b/proxy/logging/LogAccess.cc
@@ -218,6 +218,15 @@ LogAccess::marshal_client_req_http_version(char *buf)
   -------------------------------------------------------------------------*/
 
 int
+LogAccess::marshal_client_req_protocol_version(char *buf)
+{
+  DEFAULT_STR_FIELD;
+}
+
+/*-------------------------------------------------------------------------
+  -------------------------------------------------------------------------*/
+
+int
 LogAccess::marshal_client_req_header_len(char *buf)
 {
   DEFAULT_INT_FIELD;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/logging/LogAccess.h
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccess.h b/proxy/logging/LogAccess.h
index ec9feb4..16d5f33 100644
--- a/proxy/logging/LogAccess.h
+++ b/proxy/logging/LogAccess.h
@@ -183,6 +183,7 @@ public:
   inkcoreapi virtual int marshal_client_req_url_path(char *);           // STR
   inkcoreapi virtual int marshal_client_req_url_scheme(char *);         // STR
   inkcoreapi virtual int marshal_client_req_http_version(char *);       // INT
+  inkcoreapi virtual int marshal_client_req_protocol_version(char *);   // STR
   inkcoreapi virtual int marshal_client_req_header_len(char *);         // INT
   inkcoreapi virtual int marshal_client_req_body_len(char *);           // INT
   inkcoreapi virtual int marshal_client_req_tcp_reused(char *);         // INT

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/logging/LogAccessHttp.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccessHttp.cc b/proxy/logging/LogAccessHttp.cc
index 28d6c61..43f935e 100644
--- a/proxy/logging/LogAccessHttp.cc
+++ b/proxy/logging/LogAccessHttp.cc
@@ -573,6 +573,43 @@ LogAccessHttp::marshal_client_req_http_version(char *buf)
   -------------------------------------------------------------------------*/
 
 int
+LogAccessHttp::marshal_client_req_protocol_version(char *buf)
+{
+  int len = INK_MIN_ALIGN;
+  char const *tag = m_http_sm->plugin_tag;
+
+  if (!tag) {
+    if (m_client_request) {
+      HTTPVersion versionObject = m_client_request->version_get();
+      int64_t major = HTTP_MAJOR(versionObject.m_version);
+      int64_t minor = HTTP_MINOR(versionObject.m_version);
+      if (major == 1 && minor == 1) {
+        tag = "http/1.1";
+      } else if (major == 1 && minor == 0) {
+        tag = "http/1.0";
+      } else if (major == 0 && minor == 9) {
+        tag = "http/0.9";
+      } // else invalid http version
+      len = LogAccess::strlen(tag);
+    } else {
+      tag = "*";
+    }
+  } else {
+    len = LogAccess::strlen(tag);
+  }
+
+  if (buf) {
+    marshal_str(buf, tag, len);
+  }
+
+  return len; 
+}
+
+
+/*-------------------------------------------------------------------------
+  -------------------------------------------------------------------------*/
+
+int
 LogAccessHttp::marshal_client_req_header_len(char *buf)
 {
   if (buf) {

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/logging/LogAccessHttp.h
----------------------------------------------------------------------
diff --git a/proxy/logging/LogAccessHttp.h b/proxy/logging/LogAccessHttp.h
index 966f4b7..f7daf4a 100644
--- a/proxy/logging/LogAccessHttp.h
+++ b/proxy/logging/LogAccessHttp.h
@@ -68,6 +68,7 @@ public:
   virtual int marshal_client_req_url_path(char *);           // STR
   virtual int marshal_client_req_url_scheme(char *);         // STR
   virtual int marshal_client_req_http_version(char *);       // INT
+  virtual int marshal_client_req_protocol_version(char *);   // STR
   virtual int marshal_client_req_header_len(char *);         // INT
   virtual int marshal_client_req_body_len(char *);           // INT
   virtual int marshal_client_req_tcp_reused(char *);         // INT

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1a562416/proxy/spdy/SpdyClientSession.h
----------------------------------------------------------------------
diff --git a/proxy/spdy/SpdyClientSession.h b/proxy/spdy/SpdyClientSession.h
index 349942a..8b46c60 100644
--- a/proxy/spdy/SpdyClientSession.h
+++ b/proxy/spdy/SpdyClientSession.h
@@ -89,7 +89,7 @@ public:
 extern ClassAllocator<SpdyRequest> spdyRequestAllocator;
 
 // class SpdyClientSession : public Continuation, public PluginIdentity
-class SpdyClientSession : public ProxyClientSession
+class SpdyClientSession : public ProxyClientSession, public PluginIdentity
 {
 public:
   typedef ProxyClientSession super; ///< Parent type.