This is an automated email from the ASF dual-hosted git repository. membphis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-apisix.git
The following commit(s) were added to refs/heads/master by this push: new 188b184 bugfix: compare server_port with number data type. (#1154) 188b184 is described below commit 188b1849b211362e563cf5203680f5bcb1c7aabc Author: YuanSheng Wang <membp...@gmail.com> AuthorDate: Mon Feb 24 19:32:32 2020 +0800 bugfix: compare server_port with number data type. (#1154) --- lua/apisix/stream/router/ip_port.lua | 5 ++-- t/stream-node/sanity.t | 34 +++++++++++++++++++++++ t/stream-plugin/mqtt-proxy.t | 54 +++++++++++++++++++++++++++++++++++- 3 files changed, 90 insertions(+), 3 deletions(-) diff --git a/lua/apisix/stream/router/ip_port.lua b/lua/apisix/stream/router/ip_port.lua index 1a68eed..23f020d 100644 --- a/lua/apisix/stream/router/ip_port.lua +++ b/lua/apisix/stream/router/ip_port.lua @@ -18,6 +18,7 @@ local core = require("apisix.core") local ipairs = ipairs local error = error local ngx_exit = ngx.exit +local tonumber = tonumber local user_routes @@ -40,7 +41,7 @@ local function match_opts(route, api_ctx) -- todo: use resty-ipmatcher to support multiple ip address if route.value.server_port and - route.value.server_port ~= vars.server_port then + route.value.server_port ~= tonumber(vars.server_port) then return false end @@ -52,7 +53,7 @@ function _M.match(api_ctx) local routes = _M.routes() if not routes then core.log.info("not find any user stream route") - return ngx_exit(1) + return ngx_exit(200) end core.log.info("stream routes: ", core.json.delay_encode(routes)) diff --git a/t/stream-node/sanity.t b/t/stream-node/sanity.t index b4a4b6c..7eaf06e 100644 --- a/t/stream-node/sanity.t +++ b/t/stream-node/sanity.t @@ -129,3 +129,37 @@ GET /t passed --- no_error_log [error] + + + +=== TEST 6: set stream route(id: 1) +--- config + location /t { + content_by_lua_block { + local t = require("lib.test_admin").test + local code, body = t('/apisix/admin/stream_routes/1', + ngx.HTTP_PUT, + [[{ + "remote_addr": "127.0.0.1", + "server_port": 1995, + "upstream": { + "nodes": { + "127.0.0.1:1995": 1 + }, + "type": "roundrobin" + } + }]] + ) + + if code >= 300 then + ngx.status = code + end + ngx.say(body) + } + } +--- request +GET /t +--- response_body +passed +--- no_error_log +[error] diff --git a/t/stream-plugin/mqtt-proxy.t b/t/stream-plugin/mqtt-proxy.t index 8dc347f..7556fcd 100644 --- a/t/stream-plugin/mqtt-proxy.t +++ b/t/stream-plugin/mqtt-proxy.t @@ -29,7 +29,7 @@ run_tests; __DATA__ -=== TEST 1: set route(id: 1) +=== TEST 1: set route --- config location /t { content_by_lua_block { @@ -38,6 +38,7 @@ __DATA__ ngx.HTTP_PUT, [[{ "remote_addr": "127.0.0.1", + "server_port": 1985, "plugins": { "mqtt-proxy": { "protocol_name": "MQTT", @@ -83,3 +84,54 @@ Received unexpected MQTT packet type+flags hello world --- no_error_log [error] + + + +=== TEST 4: set route (wrong server port) +--- config + location /t { + content_by_lua_block { + local t = require("lib.test_admin").test + local code, body = t('/apisix/admin/stream_routes/1', + ngx.HTTP_PUT, + [[{ + "remote_addr": "127.0.0.1", + "server_port": 2000, + "plugins": { + "mqtt-proxy": { + "protocol_name": "MQTT", + "protocol_level": 4, + "upstream": { + "ip": "127.0.0.1", + "port": 1995 + } + } + } + }]] + ) + + if code >= 300 then + ngx.status = code + end + ngx.say(body) + } + } +--- request +GET /t +--- response_body +passed +--- no_error_log +[error] + + + +=== TEST 5: failed to match route +--- stream_enable +--- stream_request eval +"\x10\x0f" +--- stream_response +receive stream response error: connection reset by peer +--- error_log +receive stream response error: connection reset by peer +--- error_log +match(): not hit any route