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 <[email protected]> Authored: Tue Dec 1 23:37:21 2015 -0800 Committer: Kit Chan <[email protected]> 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, ¶m_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, ¶m_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);
