summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@rabbitmq.com>2014-08-01 10:41:16 +0400
committerMichael Klishin <michael@rabbitmq.com>2014-08-01 10:41:16 +0400
commite974144d83ba8845c0cc34c768d63c9131b766a2 (patch)
tree1e0aa632f657e5c178e6464df7b093d3174b8b3a
parenta3022d616cf878c81b8dc0694f0fc66971186dad (diff)
downloadrabbitmq-server-git-e974144d83ba8845c0cc34c768d63c9131b766a2.tar.gz
Enforce server-side value when client provided one is 0
Keeps bogus clients such as node-amqp from ignoring the channel_max limit.
-rw-r--r--src/rabbit_reader.erl3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl
index ddaf205e7d..68cef56aff 100644
--- a/src/rabbit_reader.erl
+++ b/src/rabbit_reader.erl
@@ -971,7 +971,8 @@ validate_negotiated_integer_value(Field, Min, ClientValue) ->
ServerValue = get_env(Field),
if ClientValue /= 0 andalso ClientValue < Min ->
fail_negotiation(Field, min, ServerValue, ClientValue);
- ServerValue /= 0 andalso ClientValue > ServerValue ->
+ ServerValue /= 0 andalso (ClientValue =:= 0 orelse
+ ClientValue > ServerValue) ->
fail_negotiation(Field, max, ServerValue, ClientValue);
true ->
ok