You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ki...@apache.org on 2014/07/13 09:57:47 UTC

git commit: TS-2930: missing hostname in ts.client_request.get_url() in lua plugin

Repository: trafficserver
Updated Branches:
  refs/heads/master 470732ffc -> ad8534ec3


TS-2930: missing hostname in ts.client_request.get_url() in lua plugin


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

Branch: refs/heads/master
Commit: ad8534ec3647e0a0732ef13314a4c81c6b12871f
Parents: 470732f
Author: Kit Chan <ki...@apache.org>
Authored: Sun Jul 13 00:57:23 2014 -0700
Committer: Kit Chan <ki...@apache.org>
Committed: Sun Jul 13 00:57:23 2014 -0700

----------------------------------------------------------------------
 CHANGES                                         |  2 ++
 .../experimental/ts_lua/ts_lua_client_request.c | 30 ++++++++++++++++++--
 2 files changed, 30 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ad8534ec/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index ceec407..ef99e89 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 5.1.0
 
+  *) [TS-2930] missing hostname in ts.client_request.get_url() for lua plugin.
+
   *) [TS-2934] Default remap rule will remap synthetic test
 
   *) [TS-2904] Add Via header decoder option to traffic_line.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ad8534ec/plugins/experimental/ts_lua/ts_lua_client_request.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_client_request.c b/plugins/experimental/ts_lua/ts_lua_client_request.c
index d45e6e0..b17679c 100644
--- a/plugins/experimental/ts_lua/ts_lua_client_request.c
+++ b/plugins/experimental/ts_lua/ts_lua_client_request.c
@@ -313,7 +313,7 @@ ts_lua_client_request_get_url(lua_State * L)
 
   http_ctx = ts_lua_get_http_ctx(L);
 
-  url = TSUrlStringGet(http_ctx->client_request_bufp, http_ctx->client_request_url, &url_len);
+  url = TSHttpTxnEffectiveUrlStringGet(http_ctx->txnp, &url_len);
 
   if (url) {
     lua_pushlstring(L, url, url_len);
@@ -361,7 +361,7 @@ static int
 ts_lua_client_request_get_url_host(lua_State * L)
 {
   const char *host;
-  int len;
+  int len = 0;
 
   ts_lua_http_ctx *http_ctx;
 
@@ -369,6 +369,32 @@ ts_lua_client_request_get_url_host(lua_State * L)
 
   host = TSUrlHostGet(http_ctx->client_request_bufp, http_ctx->client_request_url, &len);
 
+  if(len == 0) {
+    char *key = "Host";
+    char *l_key = "host";
+    int key_len = 4;
+    
+
+    TSMLoc field_loc;
+
+    field_loc = TSMimeHdrFieldFind(http_ctx->client_request_bufp, http_ctx->client_request_hdrp, key, key_len);
+    if (field_loc) {
+      host =
+        TSMimeHdrFieldValueStringGet(http_ctx->client_request_bufp, http_ctx->client_request_hdrp, field_loc, -1,
+                                     &len);
+      TSHandleMLocRelease(http_ctx->client_request_bufp, http_ctx->client_request_hdrp, field_loc);
+
+    } else {
+      field_loc = TSMimeHdrFieldFind(http_ctx->client_request_bufp, http_ctx->client_request_hdrp, l_key, key_len);
+      if(field_loc) {
+        host =
+          TSMimeHdrFieldValueStringGet(http_ctx->client_request_bufp, http_ctx->client_request_hdrp, field_loc, 
+                                       -1, &len);
+        TSHandleMLocRelease(http_ctx->client_request_bufp, http_ctx->client_request_hdrp, field_loc);
+      }
+    }
+  }
+
   lua_pushlstring(L, host, len);
 
   return 1;