1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
local base = require "resty.core.base"
local get_request = base.get_request
do
local keys = {'create', 'yield', 'resume', 'status', 'wrap'}
local get_raw_phase = ngx.get_raw_phase
for _, key in ipairs(keys) do
local std = coroutine['_' .. key]
local ours = coroutine['__' .. key]
coroutine[key] = function (...)
local r = get_request()
if r ~= nil then
local ctx = get_raw_phase(r)
if ctx ~= 0x020 and ctx ~= 0x040 then
return ours(...)
end
end
return std(...)
end
end
package.loaded.coroutine = coroutine
end
return {
version = base.version
}
|