11-- Copyright (C) Yichun Zhang (agentzh)
22
33
4- local ffi = require ' ffi'
4+ local ffi = require " ffi"
55local base = require " resty.core.base"
66
7+
8+ local C = ffi .C
79local ffi_new = ffi .new
810local ffi_str = ffi .string
9- local C = ffi .C
1011local type = type
12+ local error = error
13+ local tostring = tostring
14+ local setmetatable = setmetatable
1115local get_request = base .get_request
1216local get_string_buf = base .get_string_buf
1317local get_size_ptr = base .get_size_ptr
1418local new_tab = base .new_tab
15- local error = error
16- local tostring = tostring
17- local setmetatable = setmetatable
19+ local subsystem = ngx .config .subsystem
20+
21+
22+ local ngx_lua_ffi_var_get
23+ local ngx_lua_ffi_var_set
24+
1825
1926local ERR_BUF_SIZE = 256
2027
2128
2229ngx .var = new_tab (0 , 0 )
2330
2431
25- ffi .cdef [[
32+ if subsystem == " http" then
33+ ffi .cdef [[
2634 int ngx_http_lua_ffi_var_get (ngx_http_request_t * r ,
2735 const char * name_data , size_t name_len , char * lowcase_buf ,
2836 int capture_id , char ** value , size_t * value_len , char ** err );
@@ -31,7 +39,26 @@ ffi.cdef[[
3139 const unsigned char * name_data , size_t name_len ,
3240 unsigned char * lowcase_buf , const unsigned char * value ,
3341 size_t value_len , unsigned char * errbuf , size_t * errlen );
34- ]]
42+ ]]
43+
44+ ngx_lua_ffi_var_get = C .ngx_http_lua_ffi_var_get
45+ ngx_lua_ffi_var_set = C .ngx_http_lua_ffi_var_set
46+
47+ elseif subsystem == " stream" then
48+ ffi .cdef [[
49+ int ngx_stream_lua_ffi_var_get (ngx_stream_lua_request_t * r ,
50+ const char * name_data , size_t name_len , char * lowcase_buf ,
51+ int capture_id , char ** value , size_t * value_len , char ** err );
52+
53+ int ngx_stream_lua_ffi_var_set (ngx_stream_lua_request_t * r ,
54+ const unsigned char * name_data , size_t name_len ,
55+ unsigned char * lowcase_buf , const unsigned char * value ,
56+ size_t value_len , unsigned char * errbuf , size_t * errlen );
57+ ]]
58+
59+ ngx_lua_ffi_var_get = C .ngx_stream_lua_ffi_var_get
60+ ngx_lua_ffi_var_set = C .ngx_stream_lua_ffi_var_set
61+ end
3562
3663
3764local value_ptr = ffi_new (" unsigned char *[1]" )
@@ -47,8 +74,8 @@ local function var_get(self, name)
4774 local value_len = get_size_ptr ()
4875 local rc
4976 if type (name ) == " number" then
50- rc = C . ngx_http_lua_ffi_var_get (r , nil , 0 , nil , name , value_ptr ,
51- value_len , errmsg )
77+ rc = ngx_lua_ffi_var_get (r , nil , 0 , nil , name , value_ptr , value_len ,
78+ errmsg )
5279
5380 else
5481 if type (name ) ~= " string" then
@@ -58,8 +85,8 @@ local function var_get(self, name)
5885 local name_len = # name
5986 local lowcase_buf = get_string_buf (name_len )
6087
61- rc = C . ngx_http_lua_ffi_var_get (r , name , name_len , lowcase_buf , 0 ,
62- value_ptr , value_len , errmsg )
88+ rc = ngx_lua_ffi_var_get (r , name , name_len , lowcase_buf , 0 , value_ptr ,
89+ value_len , errmsg )
6390 end
6491
6592 -- ngx.log(ngx.WARN, "rc = ", rc)
@@ -104,8 +131,8 @@ local function var_set(self, name, value)
104131 end
105132
106133 local errbuf = lowcase_buf + name_len
107- local rc = C . ngx_http_lua_ffi_var_set (r , name , name_len , lowcase_buf ,
108- value , value_len , errbuf , errlen )
134+ local rc = ngx_lua_ffi_var_set (r , name , name_len , lowcase_buf , value ,
135+ value_len , errbuf , errlen )
109136
110137 -- ngx.log(ngx.WARN, "rc = ", rc)
111138
0 commit comments