diff --git a/deps/rabbitmq_web_mqtt/src/rabbit_web_mqtt_handler.erl b/deps/rabbitmq_web_mqtt/src/rabbit_web_mqtt_handler.erl index a5290d7ff6e..9fe3a0d58bc 100644 --- a/deps/rabbitmq_web_mqtt/src/rabbit_web_mqtt_handler.erl +++ b/deps/rabbitmq_web_mqtt/src/rabbit_web_mqtt_handler.erl @@ -106,11 +106,11 @@ init(Req, Opts) -> undefined -> no_supported_sub_protocol(undefined, Req); Protocol -> - case lists:member(<<"mqtt">>, Protocol) of + case lists:search(fun(P) -> P =:= <<"mqtt">> orelse P =:= <<"mqttv3.1">> end, Protocol) of false -> no_supported_sub_protocol(Protocol, Req); - true -> - Req1 = cowboy_req:set_resp_header(<<"sec-websocket-protocol">>, <<"mqtt">>, Req), + {value, MatchedProtocol} -> + Req1 = cowboy_req:set_resp_header(<<"sec-websocket-protocol">>, MatchedProtocol, Req), State = #state{socket = maps:get(proxy_header, Req, undefined), stats_timer = rabbit_event:init_stats_timer()}, WsOpts0 = proplists:get_value(ws_opts, Opts, #{}),