summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-11-29 13:10:29 +0000
committerSimon MacMullen <simon@rabbitmq.com>2011-11-29 13:10:29 +0000
commitcfd2cc8447efefcc8bde5cad0e61083ed4d31448 (patch)
tree424ac375b6e5317666907885d25514cf0017085e
parentb73cb8ac3a9cfbdb46f5a680ef8a37634ddeac63 (diff)
parent49876c1f8f0e28cf27abe7d37eb4227c513db2ce (diff)
downloadrabbitmq-server-cfd2cc8447efefcc8bde5cad0e61083ed4d31448.tar.gz
Merge bug 24392
-rw-r--r--src/rabbit_misc.erl19
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) ->