summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2016-04-27 13:34:35 -0500
committerMichael Klishin <mklishin@pivotal.io>2016-04-27 13:34:35 -0500
commit5b5d9b983b90d4840d7dc791449536e5448e6e62 (patch)
tree75bc0cd739735b9b8b53422ef5e307ad8eddddf5
parent473beb92b3bd3b22dd26b565af19a49e1151f3d9 (diff)
parent702956f2c69cba624146180f4c715912012392d2 (diff)
downloadrabbitmq-server-git-5b5d9b983b90d4840d7dc791449536e5448e6e62.tar.gz
Merge branch 'rabbitmq-server-767' into stable
-rw-r--r--src/rabbit_dead_letter.erl14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/rabbit_dead_letter.erl b/src/rabbit_dead_letter.erl
index 252405d62b..8d426f072a 100644
--- a/src/rabbit_dead_letter.erl
+++ b/src/rabbit_dead_letter.erl
@@ -139,7 +139,19 @@ update_x_death_header(Info, Headers) ->
end,
rabbit_misc:set_table_value(
Headers, <<"x-death">>, array,
- [{table, rabbit_misc:sort_field_table(Info1)} | Others])
+ [{table, rabbit_misc:sort_field_table(Info1)} | Others]);
+ {<<"x-death">>, InvalidType, Header} ->
+ rabbit_log:warning("Message has invalid x-death header (type: ~p)."
+ " Resetting header ~p~n",
+ [InvalidType, Header]),
+ %% if x-death is something other than an array (list)
+ %% then we reset it: this happens when some clients consume
+ %% a message and re-publish is, converting header values
+ %% to strings, intentionally or not.
+ %% See rabbitmq/rabbitmq-server#767 for details.
+ rabbit_misc:set_table_value(
+ Headers, <<"x-death">>, array,
+ [{table, [{<<"count">>, long, 1} | Info]}])
end.
ensure_xdeath_event_count({table, Info}, InitialVal) when InitialVal >= 1 ->