You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by sp...@apache.org on 2021/11/18 03:58:06 UTC

[apisix] branch master updated: chore: check the error from get_post_args (#5537)

This is an automated email from the ASF dual-hosted git repository.

spacewander pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 7c4f10e  chore: check the error from get_post_args (#5537)
7c4f10e is described below

commit 7c4f10e445618e30c538a6edce9ffd0da09b0816
Author: 罗泽轩 <sp...@gmail.com>
AuthorDate: Thu Nov 18 11:57:56 2021 +0800

    chore: check the error from get_post_args (#5537)
---
 apisix/core/request.lua |  7 ++++++-
 t/core/request.t        | 29 +++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/apisix/core/request.lua b/apisix/core/request.lua
index f098f63..7d9bf80 100644
--- a/apisix/core/request.lua
+++ b/apisix/core/request.lua
@@ -161,7 +161,12 @@ function _M.get_post_args(ctx)
 
         -- use 0 to avoid truncated result and keep the behavior as the
         -- same as other platforms
-        local args = req_get_post_args(0)
+        local args, err = req_get_post_args(0)
+        if not args then
+            -- do we need a way to handle huge post forms?
+            log.error("the post form is too large: ", err)
+            args = {}
+        end
         ctx.req_post_args = args
     end
 
diff --git a/t/core/request.t b/t/core/request.t
index e9dca7b..06256dc 100644
--- a/t/core/request.t
+++ b/t/core/request.t
@@ -408,3 +408,32 @@ z_z
 x x
 --- no_error_log
 [error]
+
+
+
+=== TEST 12: get_post_args when the body is stored in temp file
+--- config
+    location = /hello {
+        client_body_in_file_only clean;
+        content_by_lua_block {
+            local core = require("apisix.core")
+            local ngx_ctx = ngx.ctx
+            local api_ctx = ngx_ctx.api_ctx
+            if api_ctx == nil then
+                api_ctx = core.tablepool.fetch("api_ctx", 0, 32)
+                ngx_ctx.api_ctx = api_ctx
+            end
+
+            core.ctx.set_vars_meta(api_ctx)
+
+            local args = core.request.get_post_args(ngx.ctx.api_ctx)
+            ngx.say(args["c"])
+        }
+    }
+--- request
+POST /hello
+c=z_z&v=x%20x
+--- response_body
+nil
+--- error_log
+the post form is too large: request body in temp file not supported