More accurate reply-to handling

This commit is contained in:
Emile Joubert 2013-01-03 13:02:01 +00:00
parent 02e5c5e040
commit 5b6ff927fc
2 changed files with 14 additions and 15 deletions

View File

@ -141,14 +141,16 @@ headers_extra(SessionId, AckMode, Version,
end.
headers_post_process(Headers) ->
[case H of
{?HEADER_REPLY_TO, ?REPLY_QUEUE_PREFIX ++ _} ->
H;
Prefixes = ?VALID_DEST_PREFIXES -- [?TEMP_QUEUE_PREFIX],
[case Header of
{?HEADER_REPLY_TO, V} ->
{?HEADER_REPLY_TO, ?REPLY_QUEUE_PREFIX ++ V};
case lists:any(fun (P) -> lists:prefix(P, V) end, Prefixes) of
true -> {?HEADER_REPLY_TO, V};
false -> {?HEADER_REPLY_TO, ?REPLY_QUEUE_PREFIX ++ V}
end;
{_, _} ->
H
end || H <- Headers].
Header
end || Header <- Headers].
headers(SessionId, Delivery, Properties, AckMode, Version) ->
headers_extra(SessionId, AckMode, Version, Delivery) ++

View File

@ -19,6 +19,7 @@
-include_lib("eunit/include/eunit.hrl").
-include_lib("amqp_client/include/amqp_client.hrl").
-include("rabbit_stomp_frame.hrl").
-include("rabbit_stomp_prefixes.hrl").
%%--------------------------------------------------------------------
%% Header Processing Tests
@ -129,15 +130,11 @@ headers_post_process_test() ->
[] = lists:subtract(
rabbit_stomp_util:headers_post_process(Headers), Expected).
headers_post_process_noop1_test() ->
Headers = [{"reply-to", "/reply-queue/something"},
{"header1", "1"},
{"header2", "12"}],
Expected = [{"reply-to", "/reply-queue/something"},
{"header1", "1"},
{"header2", "12"}],
[] = lists:subtract(
rabbit_stomp_util:headers_post_process(Headers), Expected).
headers_post_process_noop_replyto_test() ->
[begin
Headers = [{"reply-to", Prefix ++ "/something"}],
Headers = rabbit_stomp_util:headers_post_process(Headers)
end || Prefix <- ?VALID_DEST_PREFIXES, Prefix /= ?TEMP_QUEUE_PREFIX].
headers_post_process_noop2_test() ->
Headers = [{"header1", "1"},