summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2013-08-01 13:04:47 +0100
committerEmile Joubert <emile@rabbitmq.com>2013-08-01 13:04:47 +0100
commit1d272beb7bfead4c8ad159229c2ba114fde9844f (patch)
treeb1809494eeb45bc743e1117089849ec05e77b5e9
parenta6225fd5cd01929846953fd767baa3727a9a1098 (diff)
downloadrabbitmq-server-1d272beb7bfead4c8ad159229c2ba114fde9844f.tar.gz
Type checks for alternative exchanges in the same way as DLX
-rw-r--r--src/rabbit_channel.erl9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index f0904163..0aeaa96b 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -894,9 +894,14 @@ handle_method(#'exchange.declare'{exchange = ExchangeNameBin,
{ok, FoundX} -> FoundX;
{error, not_found} ->
check_name('exchange', ExchangeNameBin),
- case rabbit_misc:r_arg(VHostPath, exchange, Args,
- <<"alternate-exchange">>) of
+ AeKey = <<"alternate-exchange">>,
+ case rabbit_misc:r_arg(VHostPath, exchange, Args, AeKey) of
undefined -> ok;
+ {error, {invalid_type, Type}} ->
+ rabbit_misc:protocol_error(
+ precondition_failed,
+ "invalid type '~s' for arg '~s' in ~s",
+ [Type, AeKey, rabbit_misc:rs(ExchangeName)]);
AName -> check_read_permitted(ExchangeName, State),
check_write_permitted(AName, State),
ok