Skip to content

Commit 5b0fcf9

Browse files
xiewenhuiagentzh
authored andcommitted
bugfix: fetch_key_from_memc and etc are nil out of the do block.
Signed-off-by: Yichun Zhang (agentzh) <agentzh@gmail.com>
1 parent f5ed7c8 commit 5b0fcf9

File tree

1 file changed

+62
-64
lines changed

1 file changed

+62
-64
lines changed

lualib/ngx/ssl/session/ticket/key_rotation.lua

Lines changed: 62 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -55,54 +55,13 @@ local function warn(...)
5555
end
5656

5757

58-
local shdict_name, shm_cache_pos_ttl, shm_cache_neg_ttl, disable_shm_cache
59-
local meta_shdict_set, meta_shdict_get, disable_meta_shdict
60-
do
61-
local meta_shdict = require "resty.shdict.simple"
62-
meta_shdict_set, meta_shdict_get
63-
= meta_shdict.gen_shdict_methods{
64-
dict_name = shdict_name,
65-
debug_logger = dlog,
66-
warn_logger = warn,
67-
error_logger = error_log,
68-
positive_ttl = shm_cache_pos_ttl,
69-
negative_ttl = shm_cache_neg_ttl,
70-
}
71-
end
72-
73-
74-
local fetch_key_from_memc, locks_shdict_name
75-
local memc_host, memc_port, memc_timeout, memc_conn_pool_size
76-
local memc_fetch_retries, memc_fetch_retry_delay, memc_conn_max_idle_time
77-
do
78-
local memc_shdict = require "resty.memcached.shdict"
79-
local fetch_key_from_memc = memc_shdict.gen_memc_methods{
80-
tag = "ticket_memc",
81-
82-
debug_logger = dlog,
83-
warn_logger = warn,
84-
error_logger = error_log,
85-
86-
locks_shdict_name = locks_shdict_name,
87-
88-
disable_shdict = disable_shm_cache,
89-
90-
shdict_set = meta_shdict_set,
91-
shdict_get = meta_shdict_get,
58+
local meta_shdict_set, meta_shdict_get
59+
local fetch_key_from_memc
9260

93-
memc_host = memc_host,
94-
memc_port = memc_port,
95-
memc_timeout = memc_timeout,
96-
memc_conn_pool_size = memc_conn_pool_size,
97-
memc_fetch_retries = memc_fetch_retries,
98-
memc_fetch_retry_delay = memc_fetch_retry_delay,
99-
100-
memc_conn_max_idle_time = memc_conn_max_idle_time,
101-
102-
memc_store_retries = 0,
103-
memc_store_retry_delay = 0,
104-
}
105-
end
61+
-- Store N+2 keys, including the current slot, the next slot and previous N
62+
-- slots' key.
63+
-- N = ticket_ttl / SEC_PER_HOUR
64+
local nkeys
10665

10766

10867
-- ticket keys are indexed by timestamps of time slots
@@ -178,10 +137,6 @@ local function memc_get_and_decrypt(ctx, idx, offset)
178137
end
179138

180139

181-
-- Store N+2 keys, including the current slot, the next slot and previous N
182-
-- slots' key.
183-
-- N = ticket_ttl / SEC_PER_HOUR
184-
local nkeys = floor(ticket_ttl / time_slot) + 2
185140
local function update_ticket_encryption_key(ctx, key)
186141
if not key then
187142
if DEBUG then
@@ -283,25 +238,68 @@ function _M.init(opts)
283238
time_slot = opts.key_rotation_period
284239
memc_key_prefix = opts.memc_key_prefix
285240

286-
shdict_name = opts.cache_shdict_name
287-
shm_cache_pos_ttl = opts.shm_cache_positive_ttl
288-
shm_cache_neg_ttl = opts.shm_cache_negative_ttl
289-
disable_shm_cache = opts.disable_shm_cache
290-
locks_shdict_name = opts.locks_shdict_name
241+
local shdict_name = opts.cache_shdict_name
242+
local shm_cache_pos_ttl = opts.shm_cache_positive_ttl
243+
local shm_cache_neg_ttl = opts.shm_cache_negative_ttl
244+
local disable_shm_cache = opts.disable_shm_cache
245+
local locks_shdict_name = opts.locks_shdict_name
291246

292-
memc_host = opts.memc_host
293-
memc_port = opts.memc_port
294-
memc_timeout = opts.memc_timeout
295-
memc_conn_pool_size = opts.memc_conn_pool_size
296-
memc_fetch_retries = opts.memc_fetch_retries
297-
memc_fetch_retry_delay = opts.memc_fetch_retry_delay
247+
local memc_host = opts.memc_host
248+
local memc_port = opts.memc_port
249+
local memc_timeout = opts.memc_timeout
250+
local memc_conn_pool_size = opts.memc_conn_pool_size
251+
local memc_fetch_retries = opts.memc_fetch_retries
252+
local memc_fetch_retry_delay = opts.memc_fetch_retry_delay
298253

299-
memc_conn_max_idle_time = opts.memc_conn_max_idle_time
254+
local memc_conn_max_idle_time = opts.memc_conn_max_idle_time
300255

301256
local frandom = assert(io.open("/dev/urandom", "rb"))
302257
fallback_random_key = frandom:read(48)
303258
frandom:close()
304259

260+
nkeys = floor(ticket_ttl / time_slot) + 2
261+
do
262+
local meta_shdict = require "resty.shdict.simple"
263+
meta_shdict_set, meta_shdict_get = meta_shdict.gen_shdict_methods{
264+
dict_name = shdict_name,
265+
debug_logger = dlog,
266+
warn_logger = warn,
267+
error_logger = error_log,
268+
positive_ttl = shm_cache_pos_ttl,
269+
negative_ttl = shm_cache_neg_ttl,
270+
}
271+
end
272+
273+
do
274+
local memc_shdict = require "resty.memcached.shdict"
275+
fetch_key_from_memc = memc_shdict.gen_memc_methods{
276+
tag = "ticket_memc",
277+
278+
debug_logger = dlog,
279+
warn_logger = warn,
280+
error_logger = error_log,
281+
282+
locks_shdict_name = locks_shdict_name,
283+
284+
disable_shdict = disable_shm_cache,
285+
286+
shdict_set = meta_shdict_set,
287+
shdict_get = meta_shdict_get,
288+
289+
memc_host = memc_host,
290+
memc_port = memc_port,
291+
memc_timeout = memc_timeout,
292+
memc_conn_pool_size = memc_conn_pool_size,
293+
memc_fetch_retries = memc_fetch_retries,
294+
memc_fetch_retry_delay = memc_fetch_retry_delay,
295+
296+
memc_conn_max_idle_time = memc_conn_max_idle_time,
297+
298+
memc_store_retries = 0,
299+
memc_store_retry_delay = 0,
300+
}
301+
end
302+
305303
local ctx = {}
306304

307305
if DEBUG then
@@ -312,7 +310,7 @@ function _M.init(opts)
312310
local curr_key_index = ticket_key_index(now, 0)
313311
local curr_key
314312

315-
if not disable_meta_shdict then
313+
if not disable_shm_cache then
316314
curr_key = shdict_get_and_decrypt(ctx, curr_key_index)
317315
end
318316

0 commit comments

Comments
 (0)