summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <mklishin@pivotal.io>2016-04-27 13:35:22 -0500
committerMichael Klishin <mklishin@pivotal.io>2016-04-27 13:35:22 -0500
commit8b4ae4204947a4131895320663640f390b0eaa31 (patch)
tree0925a1d57f6fe326385412df8edb2b0dc6fb080e
parent9532743d5c9db954f42693e5f412fdfed0213e1d (diff)
parent5b5d9b983b90d4840d7dc791449536e5448e6e62 (diff)
downloadrabbitmq-server-git-8b4ae4204947a4131895320663640f390b0eaa31.tar.gz
Merge branch '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 ->