From 59a70761bfda7771fcd675aeea6637055c2b2316 Mon Sep 17 00:00:00 2001 From: James Callahan Date: Wed, 21 Mar 2018 11:09:35 +1100 Subject: [PATCH 1/2] balancer: Add set_ssl_ctx as binding to ngx_lua_ffi_balancer_set_ssl_ctx Signed-off-by: Aapo Talvensaari --- lua-resty-core-0.1.13/lib/ngx/balancer.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lua-resty-core-0.1.13/lib/ngx/balancer.lua b/lua-resty-core-0.1.13/lib/ngx/balancer.lua index b947043..b59fb70 100644 --- a/lua-resty-core-0.1.13/lib/ngx/balancer.lua +++ b/lua-resty-core-0.1.13/lib/ngx/balancer.lua @@ -21,6 +21,7 @@ local subsystem = ngx.config.subsystem local ngx_lua_ffi_balancer_set_current_peer local ngx_lua_ffi_balancer_set_more_tries local ngx_lua_ffi_balancer_get_last_failure +local ngx_lua_ffi_balancer_set_ssl_ctx local ngx_lua_ffi_balancer_set_timeouts -- used by both stream and http @@ -35,6 +36,9 @@ if subsystem == 'http' then int ngx_http_lua_ffi_balancer_get_last_failure(ngx_http_request_t *r, int *status, char **err); + int ngx_http_lua_ffi_balancer_set_ssl_ctx(ngx_http_request_t *r, + void* ssl_ctx, char **err); + int ngx_http_lua_ffi_balancer_set_timeouts(ngx_http_request_t *r, long connect_timeout, long send_timeout, long read_timeout, char **err); @@ -49,6 +53,9 @@ if subsystem == 'http' then ngx_lua_ffi_balancer_get_last_failure = C.ngx_http_lua_ffi_balancer_get_last_failure + ngx_lua_ffi_balancer_set_ssl_ctx = + C.ngx_http_lua_ffi_balancer_set_ssl_ctx + ngx_lua_ffi_balancer_set_timeouts = C.ngx_http_lua_ffi_balancer_set_timeouts @@ -163,6 +170,23 @@ function _M.get_last_failure() end +if subsystem == 'http' then + function _M.set_ssl_ctx(ssl_ctx) + local r = getfenv(0).__ngx_req + if not r then + error("no request found") + end + + local state = ngx_lua_ffi_balancer_set_ssl_ctx(r, ssl_ctx, errmsg) + + if state == FFI_ERROR then + return false, ffi_str(errmsg[0]) + end + return true + end +end + + function _M.set_timeouts(connect_timeout, send_timeout, read_timeout) local r = getfenv(0).__ngx_req if not r then -- 2.17.0 From 124866719034706a2e32eda7be7e0fc978b0035c Mon Sep 17 00:00:00 2001 From: James Callahan Date: Wed, 21 Mar 2018 12:20:06 +1100 Subject: [PATCH 2/2] balancer.set_ssl_ctx: Check that argument is ffi cdata Signed-off-by: Aapo Talvensaari --- lua-resty-core-0.1.13/lib/ngx/balancer.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua-resty-core-0.1.13/lib/ngx/balancer.lua b/lua-resty-core-0.1.13/lib/ngx/balancer.lua index b59fb70..f6a3eb4 100644 --- a/lua-resty-core-0.1.13/lib/ngx/balancer.lua +++ b/lua-resty-core-0.1.13/lib/ngx/balancer.lua @@ -177,6 +177,10 @@ if subsystem == 'http' then error("no request found") end + if type(ssl_ctx) ~= "cdata" then + error("ssl context must be an ffi pointer") + end + local state = ngx_lua_ffi_balancer_set_ssl_ctx(r, ssl_ctx, errmsg) if state == FFI_ERROR then -- 2.17.0