diff options
author | Emile Joubert <emile@rabbitmq.com> | 2013-08-01 13:04:47 +0100 |
---|---|---|
committer | Emile Joubert <emile@rabbitmq.com> | 2013-08-01 13:04:47 +0100 |
commit | 1d272beb7bfead4c8ad159229c2ba114fde9844f (patch) | |
tree | b1809494eeb45bc743e1117089849ec05e77b5e9 | |
parent | a6225fd5cd01929846953fd767baa3727a9a1098 (diff) | |
download | rabbitmq-server-1d272beb7bfead4c8ad159229c2ba114fde9844f.tar.gz |
Type checks for alternative exchanges in the same way as DLX
-rw-r--r-- | src/rabbit_channel.erl | 9 |
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 |