You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2010/02/02 01:32:17 UTC

svn commit: r905476 - in /incubator/trafficserver/traffic/trunk/proxy: InkAPI.cc api/include/InkAPI.h http2/HttpSM.cc http2/HttpTransact.h

Author: zwoop
Date: Tue Feb  2 00:32:16 2010
New Revision: 905476

URL: http://svn.apache.org/viewvc?rev=905476&view=rev
Log:
TS-96: INKApi should expose the original Host header (as in the pristine header) to the plugins

       Author: Wendy Huang
       Review: Bryan and Leif

Modified:
    incubator/trafficserver/traffic/trunk/proxy/InkAPI.cc
    incubator/trafficserver/traffic/trunk/proxy/api/include/InkAPI.h
    incubator/trafficserver/traffic/trunk/proxy/http2/HttpSM.cc
    incubator/trafficserver/traffic/trunk/proxy/http2/HttpTransact.h

Modified: incubator/trafficserver/traffic/trunk/proxy/InkAPI.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/InkAPI.cc?rev=905476&r1=905475&r2=905476&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/InkAPI.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/InkAPI.cc Tue Feb  2 00:32:16 2010
@@ -5144,6 +5144,32 @@
   }
 }
 
+// pristine url is the url before remap
+INKReturnCode
+INKHttpTxnPristineUrlGet (INKHttpTxn txnp, INKMBuffer *bufp, INKMLoc *url_loc)
+{
+  if (sdk_sanity_check_txn(txnp)!=INK_SUCCESS ||
+    sdk_sanity_check_null_ptr((void*)bufp) != INK_SUCCESS ||
+    sdk_sanity_check_null_ptr((void*)url_loc) != INK_SUCCESS) {
+    return INK_ERROR;
+  }
+  HttpSM *sm = (HttpSM*) txnp;
+  HTTPHdr *hptr = &(sm->t_state.hdr_info.client_request);
+
+  if (hptr->valid()) {
+    *bufp = hptr;
+    *url_loc = (INKMLoc)sm->t_state.pristine_url.m_url_impl;
+    sdk_sanity_check_mbuffer(*bufp);
+    if (*url_loc)
+      return INK_SUCCESS;
+    else
+      return INK_ERROR;
+  }
+  else
+    return INK_ERROR;
+}
+
+
 int
 INKHttpTxnClientRespGet(INKHttpTxn txnp, INKMBuffer * bufp, INKMLoc * obj)
 {

Modified: incubator/trafficserver/traffic/trunk/proxy/api/include/InkAPI.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/api/include/InkAPI.h?rev=905476&r1=905475&r2=905476&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/api/include/InkAPI.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/api/include/InkAPI.h Tue Feb  2 00:32:16 2010
@@ -1959,6 +1959,7 @@
   inkapi INKReturnCode INKHttpTxnHookAdd(INKHttpTxn txnp, INKHttpHookID id, INKCont contp);
   inkapi INKHttpSsn INKHttpTxnSsnGet(INKHttpTxn txnp);
   inkapi int INKHttpTxnClientReqGet(INKHttpTxn txnp, INKMBuffer * bufp, INKMLoc * offset);
+  inkapi INKReturnCode INKHttpTxnPristineUrlGet(INKHttpTxn txnp, INKMBuffer *bufp, INKMLoc *url_loc);
   inkapi int INKHttpTxnClientRespGet(INKHttpTxn txnp, INKMBuffer * bufp, INKMLoc * offset);
   inkapi int INKHttpTxnServerReqGet(INKHttpTxn txnp, INKMBuffer * bufp, INKMLoc * offset);
   inkapi int INKHttpTxnServerRespGet(INKHttpTxn txnp, INKMBuffer * bufp, INKMLoc * offset);

Modified: incubator/trafficserver/traffic/trunk/proxy/http2/HttpSM.cc
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/http2/HttpSM.cc?rev=905476&r1=905475&r2=905476&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/http2/HttpSM.cc (original)
+++ incubator/trafficserver/traffic/trunk/proxy/http2/HttpSM.cc Tue Feb  2 00:32:16 2010
@@ -842,6 +842,11 @@
     if (HttpConfig::m_master.number_of_redirections)
       enable_redirection = HttpConfig::m_master.redirection_enabled;
 
+    // Preserve pristine url before remap
+    t_state.pristine_url.create(t_state.hdr_info.client_request.url_get()->m_heap);
+    t_state.pristine_url.copy(t_state.hdr_info.client_request.url_get());
+
+
     call_transact_and_set_next_state(HttpTransact::ModifyRequest);
 
     break;

Modified: incubator/trafficserver/traffic/trunk/proxy/http2/HttpTransact.h
URL: http://svn.apache.org/viewvc/incubator/trafficserver/traffic/trunk/proxy/http2/HttpTransact.h?rev=905476&r1=905475&r2=905476&view=diff
==============================================================================
--- incubator/trafficserver/traffic/trunk/proxy/http2/HttpTransact.h (original)
+++ incubator/trafficserver/traffic/trunk/proxy/http2/HttpTransact.h Tue Feb  2 00:32:16 2010
@@ -1156,6 +1156,7 @@
     unsigned int filter_mask;
 
     bool already_downgraded;
+    URL pristine_url;  // pristine url is the url before remap
 
   };
 
@@ -1462,7 +1463,8 @@
 congestion_control_crat(0),
 congestion_congested_or_failed(0),
 congestion_connection_opened(0),
-reverse_proxy(false), url_remap_success(false), remap_redirect(NULL), filter_mask(0), already_downgraded(false)
+reverse_proxy(false), url_remap_success(false), remap_redirect(NULL), filter_mask(0), already_downgraded(false),
+pristine_url()
 {
   int
     i;