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 | bc9228f5fe100b33e17dfb533c4f2d07caf7e4d4 (patch) | |
| tree | b1809494eeb45bc743e1117089849ec05e77b5e9 /src | |
| parent | 391744851de3859848c443a031910afc667502bc (diff) | |
| download | rabbitmq-server-git-bc9228f5fe100b33e17dfb533c4f2d07caf7e4d4.tar.gz | |
Type checks for alternative exchanges in the same way as DLX
Diffstat (limited to 'src')
| -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 f09041637f..0aeaa96b38 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 |
