summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2013-07-31 16:15:01 +0100
committerEmile Joubert <emile@rabbitmq.com>2013-07-31 16:15:01 +0100
commitf671dc3cfde4612c57c4d6f5c62b7db3694c243a (patch)
tree0e1f8b846541d71d147efeea0548ed79857e79e4
parenta045f91549478c34cfb709615c0d61d4a03c9835 (diff)
downloadrabbitmq-server-f671dc3cfde4612c57c4d6f5c62b7db3694c243a.tar.gz
Check DLX permissions on queue declare
-rw-r--r--src/rabbit_channel.erl7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index a8e9432c..3f2f7afa 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -986,6 +986,13 @@ handle_method(#'queue.declare'{queue = QueueNameBin,
return_queue_declare_ok(QueueName, NoWait, MessageCount,
ConsumerCount, State);
{error, not_found} ->
+ case rabbit_misc:r_arg(VHostPath, exchange, Args,
+ <<"x-dead-letter-exchange">>) of
+ undefined -> ok;
+ DLX -> check_read_permitted(QueueName, State),
+ check_write_permitted(DLX, State),
+ ok
+ end,
case rabbit_amqqueue:declare(QueueName, Durable, AutoDelete,
Args, Owner) of
{new, #amqqueue{pid = QPid}} ->