Skip to content

bug: Failed auth with body transformer not working #11608

@deltaglow

Description

@deltaglow

Current Behavior

I have in route key-auth and body-transformer plugins. When key-auth plugin fail ([lua] plugin.lua:1171: run_plugin(): key-auth exits with http status code 401) then body-transformer horibly crash with error

[error] 49#49: *325 failed to run body_filter_by_lua*: /usr/local/apisix/apisix/plugins/body-transformer.lua:220: attempt to index local 'conf' (a nil value)
stack traceback:
        /usr/local/apisix/apisix/plugins/body-transformer.lua:220: in function 'phase_func'
        /usr/local/apisix/apisix/plugin.lua:1203: in function 'common_phase'
        /usr/local/apisix/apisix/init.lua:806: in function 'http_body_filter_phase'
        body_filter_by_lua(nginx.conf:368):2: in main chunk

When I remove key-auth plugin or key-auth doesn't fail, it works as expected.

Expected Behavior

It should probably stop executing next plugins or at least body-transformer should have all data to not crash.

Error Logs

2024/09/26 09:09:26 [warn] 50#50: *14043 [lua] plugin.lua:1171: run_plugin(): key-auth exits with http status code 401, client: 172.68.213.37, server: _, request: "POST /example HTTP/2.0", host: "example.com"
2024/09/26 09:09:26 [error] 50#50: *14043 failed to run body_filter_by_lua*: /usr/local/apisix/apisix/plugins/body-transformer.lua:220: attempt to index local 'conf' (a nil value)
stack traceback:
        /usr/local/apisix/apisix/plugins/body-transformer.lua:220: in function 'phase_func'
        /usr/local/apisix/apisix/plugin.lua:1203: in function 'common_phase'
        /usr/local/apisix/apisix/init.lua:806: in function 'http_body_filter_phase'
        body_filter_by_lua(nginx.conf:368):2: in main chunk, client: 1.1.1.1, server: _, request: "POST /example HTTP/2.0", host: "example.com"
2024/09/26 09:09:26 [error] 50#50: *14043 failed to run body_filter_by_lua*: /usr/local/apisix/apisix/plugins/body-transformer.lua:220: attempt to index local 'conf' (a nil value)
stack traceback:
        /usr/local/apisix/apisix/plugins/body-transformer.lua:220: in function 'phase_func'
        /usr/local/apisix/apisix/plugin.lua:1203: in function 'common_phase'
        /usr/local/apisix/apisix/init.lua:806: in function 'http_body_filter_phase'
        body_filter_by_lua(nginx.conf:368):2: in main chunk, client: 1.1.1.1, server: _, request: "POST /example HTTP/2.0", host: "example.com"

Steps to Reproduce

  1. Create route with plugins key-auth and body-transformer
  2. Make request with failing auth

Environment

  • APISIX version (run apisix version): 3.10.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggood first issueGood for newcomers

    Type

    No type

    Projects

    Status

    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions