Merge pull request #11859 from cisiqo/patch-1

fix content type returned by Stomp
This commit is contained in:
Ivan Dyachkov 2023-11-03 08:21:08 +01:00 committed by GitHub
commit fdbf439df8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 6 deletions

View File

@ -1052,9 +1052,16 @@ handle_deliver(
_ -> _ ->
Headers0 Headers0
end, end,
Headers2 = lists:foldl(
fun({Key, _Val} = KV, Acc1) ->
lists:keystore(Key, 1, Acc1, KV)
end,
Headers1,
maps:get(stomp_headers, Headers, [])
),
Frame = #stomp_frame{ Frame = #stomp_frame{
command = <<"MESSAGE">>, command = <<"MESSAGE">>,
headers = Headers1 ++ maps:get(stomp_headers, Headers, []), headers = Headers2,
body = Payload body = Payload
}, },
[Frame | Acc]; [Frame | Acc];
@ -1160,12 +1167,12 @@ do_negotiate_version(Accepts) ->
lists:reverse(lists:sort(binary:split(Accepts, <<",">>, [global]))) lists:reverse(lists:sort(binary:split(Accepts, <<",">>, [global])))
). ).
do_negotiate_version(Ver, []) ->
{error, <<"Supported protocol versions < ", Ver/binary>>};
do_negotiate_version(Ver, [AcceptVer | _]) when Ver >= AcceptVer -> do_negotiate_version(Ver, [AcceptVer | _]) when Ver >= AcceptVer ->
{ok, AcceptVer}; {ok, AcceptVer};
do_negotiate_version(Ver, [_ | T]) -> do_negotiate_version(Ver, [_ | T]) ->
do_negotiate_version(Ver, T). do_negotiate_version(Ver, T);
do_negotiate_version(Ver, _) ->
{error, <<"Supported protocol versions < ", Ver/binary>>}.
header(Name, Headers) -> header(Name, Headers) ->
get_value(Name, Headers). get_value(Name, Headers).
@ -1227,7 +1234,6 @@ frame2message(
[ [
<<"destination">>, <<"destination">>,
<<"content-length">>, <<"content-length">>,
<<"content-type">>,
<<"transaction">>, <<"transaction">>,
<<"receipt">> <<"receipt">>
] ]

View File

@ -181,11 +181,15 @@ t_subscribe(_) ->
%% 'user-defined' header will be retain %% 'user-defined' header will be retain
ok = send_message_frame(Sock, <<"/queue/foo">>, <<"hello">>, [ ok = send_message_frame(Sock, <<"/queue/foo">>, <<"hello">>, [
{<<"user-defined">>, <<"emq">>} {<<"user-defined">>, <<"emq">>},
{<<"content-type">>, <<"text/html">>}
]), ]),
?assertMatch({ok, #stomp_frame{command = <<"RECEIPT">>}}, recv_a_frame(Sock)), ?assertMatch({ok, #stomp_frame{command = <<"RECEIPT">>}}, recv_a_frame(Sock)),
{ok, Frame} = recv_a_frame(Sock), {ok, Frame} = recv_a_frame(Sock),
?assertEqual(
<<"text/html">>, proplists:get_value(<<"content-type">>, Frame#stomp_frame.headers)
),
?assertMatch( ?assertMatch(
#stomp_frame{ #stomp_frame{
@ -977,6 +981,10 @@ t_mountpoint(_) ->
}} = recv_a_frame(Sock), }} = recv_a_frame(Sock),
?assertEqual(<<"t/a">>, proplists:get_value(<<"destination">>, Headers)), ?assertEqual(<<"t/a">>, proplists:get_value(<<"destination">>, Headers)),
?assertEqual(
<<"text/plain">>, proplists:get_value(<<"content-type">>, Headers)
),
ok = send_disconnect_frame(Sock) ok = send_disconnect_frame(Sock)
end, end,