diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2011-11-29 13:10:29 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2011-11-29 13:10:29 +0000 |
commit | cfd2cc8447efefcc8bde5cad0e61083ed4d31448 (patch) | |
tree | 424ac375b6e5317666907885d25514cf0017085e | |
parent | b73cb8ac3a9cfbdb46f5a680ef8a37634ddeac63 (diff) | |
parent | 49876c1f8f0e28cf27abe7d37eb4227c513db2ce (diff) | |
download | rabbitmq-server-cfd2cc8447efefcc8bde5cad0e61083ed4d31448.tar.gz |
Merge bug 24392
-rw-r--r-- | src/rabbit_misc.erl | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 88192e8f..0578cf7d 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -250,18 +250,23 @@ assert_args_equivalence(Orig, New, Name, Keys) -> ok. assert_args_equivalence1(Orig, New, Name, Key) -> - case {table_lookup(Orig, Key), table_lookup(New, Key)} of + {Orig1, New1} = {table_lookup(Orig, Key), table_lookup(New, Key)}, + FailureFun = fun () -> + protocol_error(precondition_failed, "inequivalent arg '~s'" + "for ~s: received ~s but current is ~s", + [Key, rs(Name), val(New1), val(Orig1)]) + end, + case {Orig1, New1} of {Same, Same} -> ok; - {{OrigType, OrigVal} = Orig1, {NewType, NewVal} = New1} -> + {{OrigType, OrigVal}, {NewType, NewVal}} -> case type_class(OrigType) == type_class(NewType) andalso OrigVal == NewVal of true -> ok; - false -> protocol_error(precondition_failed, "inequivalent arg" - " '~s' for ~s: received ~s but current" - " is ~s", - [Key, rs(Name), val(New1), val(Orig1)]) - end + false -> FailureFun() + end; + {_, _} -> + FailureFun() end. val(undefined) -> |