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 2015/12/02 08:37:28 UTC

trafficserver git commit: TS-4045: improvement on ts_lua plugin. This closes #357

Repository: trafficserver
Updated Branches:
  refs/heads/master 076279261 -> 2121859b3


TS-4045: improvement on ts_lua plugin. This closes #357


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

Branch: refs/heads/master
Commit: 2121859b3868e49631f128b7bea993e19eba2cc1
Parents: 0762792
Author: Kit Chan <ki...@apache.org>
Authored: Tue Dec 1 23:37:21 2015 -0800
Committer: Kit Chan <ki...@apache.org>
Committed: Tue Dec 1 23:37:21 2015 -0800

----------------------------------------------------------------------
 doc/admin-guide/plugins/ts_lua.en.rst           | 20 ++++++++
 .../ts_lua/ts_lua_cached_response.c             |  8 ++--
 .../experimental/ts_lua/ts_lua_client_request.c | 50 ++++++++++----------
 .../ts_lua/ts_lua_client_response.c             | 17 +++----
 plugins/experimental/ts_lua/ts_lua_fetch.c      |  4 +-
 plugins/experimental/ts_lua/ts_lua_http.c       | 34 ++++++++-----
 plugins/experimental/ts_lua/ts_lua_http_cntl.c  |  4 +-
 .../experimental/ts_lua/ts_lua_http_config.c    | 47 ++++++++++++------
 .../experimental/ts_lua/ts_lua_http_intercept.c | 16 ++++++-
 .../experimental/ts_lua/ts_lua_http_milestone.c |  2 +-
 plugins/experimental/ts_lua/ts_lua_remap.c      | 20 ++++----
 .../experimental/ts_lua/ts_lua_server_request.c | 26 +++++-----
 .../ts_lua/ts_lua_server_response.c             | 14 +++---
 plugins/experimental/ts_lua/ts_lua_util.h       |  7 +++
 14 files changed, 168 insertions(+), 101 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/doc/admin-guide/plugins/ts_lua.en.rst
----------------------------------------------------------------------
diff --git a/doc/admin-guide/plugins/ts_lua.en.rst b/doc/admin-guide/plugins/ts_lua.en.rst
index 37d11f2..27b27a8 100644
--- a/doc/admin-guide/plugins/ts_lua.en.rst
+++ b/doc/admin-guide/plugins/ts_lua.en.rst
@@ -2687,6 +2687,26 @@ Here is an example:
 
 `TOP <#ts-lua-plugin>`_
 
+ts.http.set_debug
+-----------------
+**syntax:** *ts.http.set_debug(NUMBER)*
+
+**context:** do_remap or do_global_* or later.
+
+**decription:** This function can be used to enable debug log for the transaction
+
+Here is an example:
+
+::
+
+    function do_remap()
+        ts.http.set_debug(1)
+        return 0
+    end
+
+
+`TOP <#ts-lua-plugin>`_
+
 ts.http.cntl_get
 ----------------
 **syntax:** *val = ts.http.cntl_get(CNTL_TYPE)*

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_cached_response.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_cached_response.c b/plugins/experimental/ts_lua/ts_lua_cached_response.c
index 01be519..2c52e8f 100644
--- a/plugins/experimental/ts_lua/ts_lua_cached_response.c
+++ b/plugins/experimental/ts_lua/ts_lua_cached_response.c
@@ -103,7 +103,7 @@ ts_lua_cached_response_get_status(lua_State *L)
   int status;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_CACHED_RESPONSE_HDR(http_ctx);
 
@@ -123,7 +123,7 @@ ts_lua_cached_response_get_version(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_CACHED_RESPONSE_HDR(http_ctx);
 
@@ -150,7 +150,7 @@ ts_lua_cached_response_header_get(lua_State *L)
   TSMLoc field_loc;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   /*   we skip the first argument that is the table */
   key = luaL_checklstring(L, 2, &key_len);
@@ -193,7 +193,7 @@ ts_lua_cached_response_get_headers(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_CACHED_RESPONSE_HDR(http_ctx);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/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 7151971..7a729ab 100644
--- a/plugins/experimental/ts_lua/ts_lua_client_request.c
+++ b/plugins/experimental/ts_lua/ts_lua_client_request.c
@@ -145,7 +145,7 @@ ts_lua_client_request_header_get(lua_State *L)
   TSMLoc field_loc;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   /*  we skip the first argument that is the table */
   key = luaL_checklstring(L, 2, &key_len);
@@ -181,7 +181,7 @@ ts_lua_client_request_header_set(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   remove = 0;
   val = NULL;
@@ -239,7 +239,7 @@ ts_lua_client_request_get_headers(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   lua_newtable(L);
 
@@ -305,7 +305,7 @@ ts_lua_client_request_get_url(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   url = TSHttpTxnEffectiveUrlStringGet(http_ctx->txnp, &url_len);
 
@@ -331,7 +331,7 @@ ts_lua_client_request_get_pristine_url(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (TSHttpTxnPristineUrlGet(http_ctx->txnp, &bufp, &url_loc) != TS_SUCCESS)
     return 0;
@@ -359,7 +359,7 @@ ts_lua_client_request_get_url_host(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   host = TSUrlHostGet(http_ctx->client_request_bufp, http_ctx->client_request_url, &len);
 
@@ -398,7 +398,7 @@ ts_lua_client_request_set_url_host(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   host = luaL_checklstring(L, 1, &len);
 
@@ -414,7 +414,7 @@ ts_lua_client_request_get_url_port(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   port = TSUrlPortGet(http_ctx->client_request_bufp, http_ctx->client_request_url);
 
@@ -430,7 +430,7 @@ ts_lua_client_request_set_url_port(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   port = luaL_checkint(L, 1);
 
@@ -447,7 +447,7 @@ ts_lua_client_request_get_url_scheme(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   scheme = TSUrlSchemeGet(http_ctx->client_request_bufp, http_ctx->client_request_url, &len);
 
@@ -464,7 +464,7 @@ ts_lua_client_request_set_url_scheme(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   scheme = luaL_checklstring(L, 1, &len);
 
@@ -483,7 +483,7 @@ ts_lua_client_request_get_uri(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   path = TSUrlPathGet(http_ctx->client_request_bufp, http_ctx->client_request_url, &path_len);
 
@@ -506,7 +506,7 @@ ts_lua_client_request_set_uri(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   path = luaL_checklstring(L, 1, &path_len);
 
@@ -539,7 +539,7 @@ ts_lua_client_request_get_uri_args(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   param = TSUrlHttpQueryGet(http_ctx->client_request_bufp, http_ctx->client_request_url, &param_len);
 
@@ -560,7 +560,7 @@ ts_lua_client_request_set_uri_args(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   param = luaL_checklstring(L, 1, &param_len);
   TSUrlHttpQuerySet(http_ctx->client_request_bufp, http_ctx->client_request_url, param, param_len);
@@ -575,7 +575,7 @@ ts_lua_client_request_client_addr_get_ip(lua_State *L)
   char cip[128];
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   client_ip = TSHttpTxnClientAddrGet(http_ctx->txnp);
 
@@ -602,7 +602,7 @@ ts_lua_client_request_client_addr_get_port(lua_State *L)
   ts_lua_http_ctx *http_ctx;
   int port;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   client_ip = TSHttpTxnClientAddrGet(http_ctx->txnp);
 
@@ -629,7 +629,7 @@ ts_lua_client_request_client_addr_get_incoming_port(lua_State *L)
   ts_lua_http_ctx *http_ctx;
   int port;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   incoming_addr = TSHttpTxnIncomingAddrGet(http_ctx->txnp);
 
@@ -658,7 +658,7 @@ ts_lua_client_request_client_addr_get_addr(lua_State *L)
   int family;
   char cip[128];
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   client_ip = TSHttpTxnClientAddrGet(http_ctx->txnp);
 
@@ -704,7 +704,7 @@ ts_lua_client_request_get_method(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   method = TSHttpHdrMethodGet(http_ctx->client_request_bufp, http_ctx->client_request_hdrp, &method_len);
 
@@ -725,7 +725,7 @@ ts_lua_client_request_set_method(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   method = luaL_checklstring(L, 1, &method_len);
 
@@ -749,7 +749,7 @@ ts_lua_client_request_get_body_size(lua_State *L)
   int64_t body_size;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   body_size = TSHttpTxnClientReqBodyBytesGet(http_ctx->txnp);
   lua_pushnumber(L, body_size);
@@ -776,7 +776,7 @@ ts_lua_client_request_get_version(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   version = TSHttpHdrVersionGet(http_ctx->client_request_bufp, http_ctx->client_request_hdrp);
 
@@ -799,7 +799,7 @@ ts_lua_client_request_set_version(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   version = luaL_checklstring(L, 1, &len);
 
@@ -823,7 +823,7 @@ ts_lua_client_request_get_header_size(lua_State *L)
   int header_size;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   header_size = TSHttpTxnClientReqHdrBytesGet(http_ctx->txnp);
   lua_pushnumber(L, header_size);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_client_response.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_client_response.c b/plugins/experimental/ts_lua/ts_lua_client_response.c
index d4142b1..7e7d7f4 100644
--- a/plugins/experimental/ts_lua/ts_lua_client_response.c
+++ b/plugins/experimental/ts_lua/ts_lua_client_response.c
@@ -89,7 +89,7 @@ ts_lua_client_response_header_get(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   /*  we skip the first argument that is the table */
   key = luaL_checklstring(L, 2, &key_len);
@@ -132,7 +132,7 @@ ts_lua_client_response_header_set(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   remove = 0;
   val = NULL;
@@ -196,7 +196,7 @@ ts_lua_client_response_get_headers(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_CLIENT_RESPONSE_HDR(http_ctx);
 
@@ -247,7 +247,7 @@ ts_lua_client_response_get_status(lua_State *L)
   int status;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_CLIENT_RESPONSE_HDR(http_ctx);
 
@@ -267,7 +267,7 @@ ts_lua_client_response_set_status(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_CLIENT_RESPONSE_HDR(http_ctx);
 
@@ -291,7 +291,7 @@ ts_lua_client_response_get_version(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_CLIENT_RESPONSE_HDR(http_ctx);
 
@@ -316,7 +316,7 @@ ts_lua_client_response_set_version(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_CLIENT_RESPONSE_HDR(http_ctx);
 
@@ -343,7 +343,8 @@ ts_lua_client_response_set_error_resp(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
+
   TS_LUA_CHECK_CLIENT_RESPONSE_HDR(http_ctx);
 
   n = lua_gettop(L);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_fetch.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_fetch.c b/plugins/experimental/ts_lua/ts_lua_fetch.c
index 39cf66a..6f9f314 100644
--- a/plugins/experimental/ts_lua/ts_lua_fetch.c
+++ b/plugins/experimental/ts_lua/ts_lua_fetch.c
@@ -489,8 +489,8 @@ ts_lua_fill_one_result(lua_State *L, ts_lua_fetch_info *fi)
     TSfree(dst);
   }
 
-  // truncked
-  lua_pushlstring(L, "truncked", sizeof("truncked") - 1);
+  // truncated
+  lua_pushlstring(L, "truncated", sizeof("truncated") - 1);
   if (fi->failed) {
     lua_pushboolean(L, 1);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_http.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_http.c b/plugins/experimental/ts_lua/ts_lua_http.c
index 3ed16ea..69c246b 100644
--- a/plugins/experimental/ts_lua/ts_lua_http.c
+++ b/plugins/experimental/ts_lua/ts_lua_http.c
@@ -171,7 +171,7 @@ ts_lua_http_set_retstatus(lua_State *L)
   int status;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   status = luaL_checkinteger(L, 1);
   TSHttpTxnSetHttpRetStatus(http_ctx->txnp, status);
@@ -185,7 +185,7 @@ ts_lua_http_set_retbody(lua_State *L)
   size_t body_len;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   body = luaL_checklstring(L, 1, &body_len);
   TSHttpTxnErrorBodySet(http_ctx->txnp, TSstrdup(body), body_len, NULL); // Defaults to text/html
@@ -200,7 +200,7 @@ ts_lua_http_set_resp(lua_State *L)
   size_t body_len;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   n = lua_gettop(L);
 
@@ -222,7 +222,7 @@ ts_lua_http_get_cache_lookup_status(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (TSHttpTxnCacheLookupStatusGet(http_ctx->txnp, &status) == TS_ERROR) {
     lua_pushnil(L);
@@ -240,7 +240,7 @@ ts_lua_http_set_cache_lookup_status(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   status = luaL_checknumber(L, 1);
 
@@ -260,7 +260,7 @@ ts_lua_http_get_cache_lookup_url(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (TSUrlCreate(http_ctx->client_request_bufp, &url) != TS_SUCCESS) {
     lua_pushnil(L);
@@ -301,7 +301,7 @@ ts_lua_http_set_cache_lookup_url(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   url = luaL_checklstring(L, 1, &url_len);
 
@@ -329,7 +329,7 @@ ts_lua_http_set_cache_url(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   url = luaL_checklstring(L, 1, &url_len);
 
@@ -362,7 +362,7 @@ ts_lua_http_resp_cache_transformed(lua_State *L)
   int action;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   action = luaL_checkinteger(L, 1);
 
@@ -377,7 +377,7 @@ ts_lua_http_resp_cache_untransformed(lua_State *L)
   int action;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   action = luaL_checkinteger(L, 1);
 
@@ -392,7 +392,7 @@ ts_lua_http_is_internal_request(lua_State *L)
   TSReturnCode ret;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   ret = TSHttpTxnIsInternal(http_ctx->txnp);
 
@@ -412,7 +412,7 @@ ts_lua_http_skip_remapping_set(lua_State *L)
   int action;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   action = luaL_checkinteger(L, 1);
 
@@ -426,7 +426,7 @@ ts_lua_http_transaction_count(lua_State *L)
 {
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TSHttpSsn ssn = TSHttpTxnSsnGet(http_ctx->txnp);
   if (ssn) {
@@ -445,6 +445,10 @@ ts_lua_http_resp_transform_get_upstream_bytes(lua_State *L)
   ts_lua_http_transform_ctx *transform_ctx;
 
   transform_ctx = ts_lua_get_http_transform_ctx(L);
+  if (transform_ctx == NULL) {
+    TSError("[ts_lua] missing transform_ctx");
+    return 0;
+  }
 
   lua_pushnumber(L, transform_ctx->upstream_bytes);
 
@@ -458,6 +462,10 @@ ts_lua_http_resp_transform_set_downstream_bytes(lua_State *L)
   ts_lua_http_transform_ctx *transform_ctx;
 
   transform_ctx = ts_lua_get_http_transform_ctx(L);
+  if (transform_ctx == NULL) {
+    TSError("[ts_lua] missing transform_ctx");
+    return 0;
+  }
 
   n = luaL_checkinteger(L, 1);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_http_cntl.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_http_cntl.c b/plugins/experimental/ts_lua/ts_lua_http_cntl.c
index d2c1390..b12da71 100644
--- a/plugins/experimental/ts_lua/ts_lua_http_cntl.c
+++ b/plugins/experimental/ts_lua/ts_lua_http_cntl.c
@@ -68,7 +68,7 @@ ts_lua_http_cntl_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   cntl_type = luaL_checkinteger(L, 1);
   value = luaL_checkinteger(L, 2);
@@ -85,7 +85,7 @@ ts_lua_http_cntl_get(lua_State *L)
   int64_t value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   cntl_type = luaL_checkinteger(L, 1);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_http_config.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_http_config.c b/plugins/experimental/ts_lua/ts_lua_http_config.c
index 05edf21..738cd0d 100644
--- a/plugins/experimental/ts_lua/ts_lua_http_config.c
+++ b/plugins/experimental/ts_lua/ts_lua_http_config.c
@@ -224,6 +224,7 @@ static int ts_lua_http_server_packet_tos_set(lua_State *L);
 static int ts_lua_http_client_packet_dscp_set(lua_State *L);
 static int ts_lua_http_server_packet_dscp_set(lua_State *L);
 static int ts_lua_http_enable_redirect(lua_State *L);
+static int ts_lua_http_set_debug(lua_State *L);
 
 void
 ts_lua_inject_http_config_api(lua_State *L)
@@ -271,6 +272,9 @@ ts_lua_inject_http_config_api(lua_State *L)
 
   lua_pushcfunction(L, ts_lua_http_enable_redirect);
   lua_setfield(L, -2, "enable_redirect");
+
+  lua_pushcfunction(L, ts_lua_http_set_debug);
+  lua_setfield(L, -2, "set_debug");
 }
 
 static void
@@ -296,7 +300,7 @@ ts_lua_http_config_int_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   conf = luaL_checkinteger(L, 1);
   value = luaL_checkinteger(L, 2);
@@ -313,7 +317,7 @@ ts_lua_http_config_int_get(lua_State *L)
   int64_t value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   conf = luaL_checkinteger(L, 1);
 
@@ -331,7 +335,7 @@ ts_lua_http_config_float_set(lua_State *L)
   float value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   conf = luaL_checkinteger(L, 1);
   value = luaL_checknumber(L, 2);
@@ -348,7 +352,7 @@ ts_lua_http_config_float_get(lua_State *L)
   float value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   conf = luaL_checkinteger(L, 1);
 
@@ -367,7 +371,7 @@ ts_lua_http_config_string_set(lua_State *L)
   size_t value_len;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   conf = luaL_checkinteger(L, 1);
   value = luaL_checklstring(L, 2, &value_len);
@@ -385,7 +389,7 @@ ts_lua_http_config_string_get(lua_State *L)
   int value_len;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   conf = luaL_checkinteger(L, 1);
 
@@ -403,7 +407,7 @@ ts_lua_http_timeout_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   conf = luaL_checkinteger(L, 1);
   value = luaL_checkinteger(L, 2);
@@ -443,7 +447,7 @@ ts_lua_http_client_packet_mark_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   value = luaL_checkinteger(L, 1);
 
@@ -459,7 +463,7 @@ ts_lua_http_server_packet_mark_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   value = luaL_checkinteger(L, 1);
 
@@ -475,7 +479,7 @@ ts_lua_http_client_packet_tos_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   value = luaL_checkinteger(L, 1);
 
@@ -491,7 +495,7 @@ ts_lua_http_enable_redirect(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   value = luaL_checkinteger(L, 1);
 
@@ -501,6 +505,21 @@ ts_lua_http_enable_redirect(lua_State *L)
   return 0;
 }
 
+static int
+ts_lua_http_set_debug(lua_State *L)
+{
+  int value;
+  ts_lua_http_ctx *http_ctx;
+
+  GET_HTTP_CONTEXT(http_ctx, L);
+
+  value = luaL_checkinteger(L, 1);
+
+  TSDebug(TS_LUA_DEBUG_TAG, "set debug");
+  TSHttpTxnDebugSet(http_ctx->txnp, value);
+
+  return 0;
+}
 
 static int
 ts_lua_http_server_packet_tos_set(lua_State *L)
@@ -508,7 +527,7 @@ ts_lua_http_server_packet_tos_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   value = luaL_checkinteger(L, 1);
 
@@ -524,7 +543,7 @@ ts_lua_http_client_packet_dscp_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   value = luaL_checkinteger(L, 1);
 
@@ -540,7 +559,7 @@ ts_lua_http_server_packet_dscp_set(lua_State *L)
   int value;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   value = luaL_checkinteger(L, 1);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_http_intercept.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_http_intercept.c b/plugins/experimental/ts_lua/ts_lua_http_intercept.c
index e2fbd9d..58467ca 100644
--- a/plugins/experimental/ts_lua/ts_lua_http_intercept.c
+++ b/plugins/experimental/ts_lua/ts_lua_http_intercept.c
@@ -70,7 +70,8 @@ ts_lua_http_intercept(lua_State *L)
   ts_lua_http_ctx *http_ctx;
   ts_lua_http_intercept_ctx *ictx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
+
   n = lua_gettop(L);
 
   if (n < 1) {
@@ -102,7 +103,8 @@ ts_lua_http_server_intercept(lua_State *L)
   ts_lua_http_ctx *http_ctx;
   ts_lua_http_intercept_ctx *ictx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
+
   n = lua_gettop(L);
 
   if (n < 1) {
@@ -354,6 +356,11 @@ ts_lua_say(lua_State *L)
   ts_lua_http_intercept_ctx *ictx;
 
   ictx = ts_lua_get_http_intercept_ctx(L);
+  if (ictx == NULL) {
+    TSError("[ts_lua] missing ictx");
+    return 0;
+  }
+
   data = luaL_checklstring(L, 1, &len);
 
   if (len > 0) {
@@ -371,6 +378,11 @@ ts_lua_flush(lua_State *L)
   ts_lua_http_intercept_ctx *ictx;
 
   ictx = ts_lua_get_http_intercept_ctx(L);
+  if (ictx == NULL) {
+    TSError("[ts_lua] missing ictx");
+    return 0;
+  }
+
   avail = TSIOBufferReaderAvail(ictx->output.reader);
 
   if (avail > 0) {

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_http_milestone.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_http_milestone.c b/plugins/experimental/ts_lua/ts_lua_http_milestone.c
index 93105cc..82bf25e 100644
--- a/plugins/experimental/ts_lua/ts_lua_http_milestone.c
+++ b/plugins/experimental/ts_lua/ts_lua_http_milestone.c
@@ -92,7 +92,7 @@ ts_lua_http_milestone_get(lua_State *L)
   TSHRTime epoch;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   milestone_type = luaL_checkinteger(L, 1);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_remap.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_remap.c b/plugins/experimental/ts_lua/ts_lua_remap.c
index 3459158..1b53788 100644
--- a/plugins/experimental/ts_lua/ts_lua_remap.c
+++ b/plugins/experimental/ts_lua/ts_lua_remap.c
@@ -108,7 +108,7 @@ ts_lua_remap_get_from_url_host(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     host = TSUrlHostGet(http_ctx->client_request_bufp, http_ctx->rri->mapFromUrl, &len);
@@ -132,7 +132,7 @@ ts_lua_remap_get_from_url_port(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     port = TSUrlPortGet(http_ctx->client_request_bufp, http_ctx->rri->mapFromUrl);
@@ -153,7 +153,7 @@ ts_lua_remap_get_from_url_scheme(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     scheme = TSUrlSchemeGet(http_ctx->client_request_bufp, http_ctx->rri->mapFromUrl, &len);
@@ -180,7 +180,7 @@ ts_lua_remap_get_from_uri(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     path = TSUrlPathGet(http_ctx->client_request_bufp, http_ctx->rri->mapFromUrl, &path_len);
@@ -209,7 +209,7 @@ ts_lua_remap_get_from_url(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     url = TSUrlStringGet(http_ctx->client_request_bufp, http_ctx->rri->mapFromUrl, &url_len);
@@ -238,7 +238,7 @@ ts_lua_remap_get_to_url_host(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     host = TSUrlHostGet(http_ctx->client_request_bufp, http_ctx->rri->mapToUrl, &len);
@@ -262,7 +262,7 @@ ts_lua_remap_get_to_url_port(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     port = TSUrlPortGet(http_ctx->client_request_bufp, http_ctx->rri->mapToUrl);
@@ -283,7 +283,7 @@ ts_lua_remap_get_to_url_scheme(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     scheme = TSUrlSchemeGet(http_ctx->client_request_bufp, http_ctx->rri->mapToUrl, &len);
@@ -310,7 +310,7 @@ ts_lua_remap_get_to_uri(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     path = TSUrlPathGet(http_ctx->client_request_bufp, http_ctx->rri->mapToUrl, &path_len);
@@ -339,7 +339,7 @@ ts_lua_remap_get_to_url(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   if (http_ctx->rri != NULL) {
     url = TSUrlStringGet(http_ctx->client_request_bufp, http_ctx->rri->mapToUrl, &url_len);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_server_request.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_server_request.c b/plugins/experimental/ts_lua/ts_lua_server_request.c
index 9f40fcb..326d266 100644
--- a/plugins/experimental/ts_lua/ts_lua_server_request.c
+++ b/plugins/experimental/ts_lua/ts_lua_server_request.c
@@ -137,7 +137,7 @@ ts_lua_server_request_header_get(lua_State *L)
   TSMLoc field_loc;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   /*  we skip the first argument that is the table */
   key = luaL_checklstring(L, 2, &key_len);
@@ -180,7 +180,7 @@ ts_lua_server_request_header_set(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   remove = 0;
   val = NULL;
@@ -244,7 +244,7 @@ ts_lua_server_request_get_headers(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_REQUEST_HDR(http_ctx);
 
@@ -282,7 +282,7 @@ ts_lua_server_request_get_header_size(lua_State *L)
   int header_size;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   header_size = TSHttpTxnServerReqHdrBytesGet(http_ctx->txnp);
   lua_pushnumber(L, header_size);
@@ -303,7 +303,7 @@ ts_lua_server_request_get_body_size(lua_State *L)
   int64_t body_size;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   body_size = TSHttpTxnServerReqBodyBytesGet(http_ctx->txnp);
   lua_pushnumber(L, body_size);
@@ -331,7 +331,7 @@ ts_lua_server_request_get_uri(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_REQUEST_URL(http_ctx);
 
@@ -356,7 +356,7 @@ ts_lua_server_request_set_uri(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_REQUEST_URL(http_ctx);
 
@@ -390,7 +390,7 @@ ts_lua_server_request_set_uri_args(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_REQUEST_URL(http_ctx);
 
@@ -408,7 +408,7 @@ ts_lua_server_request_get_uri_args(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_REQUEST_URL(http_ctx);
 
@@ -431,7 +431,7 @@ ts_lua_server_request_server_addr_get_ip(lua_State *L)
   char sip[128];
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   server_ip = TSHttpTxnServerAddrGet(http_ctx->txnp);
 
@@ -458,7 +458,7 @@ ts_lua_server_request_server_addr_get_port(lua_State *L)
   ts_lua_http_ctx *http_ctx;
   int port;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   server_ip = TSHttpTxnServerAddrGet(http_ctx->txnp);
 
@@ -485,7 +485,7 @@ ts_lua_server_request_server_addr_get_outgoing_port(lua_State *L)
   ts_lua_http_ctx *http_ctx;
   int port;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   outgoing_addr = TSHttpTxnOutgoingAddrGet(http_ctx->txnp);
 
@@ -514,7 +514,7 @@ ts_lua_server_request_server_addr_get_addr(lua_State *L)
   int family;
   char sip[128];
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   server_ip = TSHttpTxnServerAddrGet(http_ctx->txnp);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_server_response.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_server_response.c b/plugins/experimental/ts_lua/ts_lua_server_response.c
index 24bbef9..caa35d2 100644
--- a/plugins/experimental/ts_lua/ts_lua_server_response.c
+++ b/plugins/experimental/ts_lua/ts_lua_server_response.c
@@ -95,7 +95,7 @@ ts_lua_server_response_get_headers(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_RESPONSE_HDR(http_ctx);
 
@@ -146,7 +146,7 @@ ts_lua_server_response_header_get(lua_State *L)
   TSMLoc field_loc;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   /*  we skip the first argument that is the table */
   key = luaL_checklstring(L, 2, &key_len);
@@ -184,7 +184,7 @@ ts_lua_server_response_header_set(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   remove = 0;
   val = NULL;
@@ -231,7 +231,7 @@ ts_lua_server_response_get_status(lua_State *L)
   int status;
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_RESPONSE_HDR(http_ctx);
 
@@ -251,7 +251,7 @@ ts_lua_server_response_set_status(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_RESPONSE_HDR(http_ctx);
 
@@ -275,7 +275,7 @@ ts_lua_server_response_get_version(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_RESPONSE_HDR(http_ctx);
 
@@ -301,7 +301,7 @@ ts_lua_server_response_set_version(lua_State *L)
 
   ts_lua_http_ctx *http_ctx;
 
-  http_ctx = ts_lua_get_http_ctx(L);
+  GET_HTTP_CONTEXT(http_ctx, L);
 
   TS_LUA_CHECK_SERVER_RESPONSE_HDR(http_ctx);
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2121859b/plugins/experimental/ts_lua/ts_lua_util.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_util.h b/plugins/experimental/ts_lua/ts_lua_util.h
index d8a003b..7cd7675 100644
--- a/plugins/experimental/ts_lua/ts_lua_util.h
+++ b/plugins/experimental/ts_lua/ts_lua_util.h
@@ -42,6 +42,13 @@ ts_lua_cont_info *ts_lua_get_cont_info(lua_State *L);
 void ts_lua_set_http_ctx(lua_State *L, ts_lua_http_ctx *ctx);
 ts_lua_http_ctx *ts_lua_get_http_ctx(lua_State *L);
 
+#define GET_HTTP_CONTEXT(ctx, list)       \
+  ctx = ts_lua_get_http_ctx(list);        \
+  if (ctx == NULL) {                      \
+    TSError("[ts_lua] missing http_ctx"); \
+    return 0;                             \
+  }
+
 ts_lua_http_ctx *ts_lua_create_http_ctx(ts_lua_main_ctx *mctx, ts_lua_instance_conf *conf);
 void ts_lua_destroy_http_ctx(ts_lua_http_ctx *http_ctx);