diff options
| author | Matthew Sackman <matthew@lshift.net> | 2010-05-19 17:53:07 +0100 |
|---|---|---|
| committer | Matthew Sackman <matthew@lshift.net> | 2010-05-19 17:53:07 +0100 |
| commit | c5fb85cc756078eb43edcd6f7651b03c544de6a4 (patch) | |
| tree | c5aefd4cb6912009ef5f64c815583c5911acd583 | |
| parent | 14fa1ee3f19dc9aacf683669437a7a0278ea82b3 (diff) | |
| parent | 2604ad8d6faa63be8628c2d8cb9b440504a5d1ce (diff) | |
| download | rabbitmq-server-git-c5fb85cc756078eb43edcd6f7651b03c544de6a4.tar.gz | |
Merging default into bug 21673
| -rw-r--r-- | src/rabbit_binary_generator.erl | 9 | ||||
| -rw-r--r-- | src/rabbit_plugin_activator.erl | 1 | ||||
| -rw-r--r-- | src/rabbit_reader.erl | 7 |
3 files changed, 12 insertions, 5 deletions
diff --git a/src/rabbit_binary_generator.erl b/src/rabbit_binary_generator.erl index ed84373585..27a1275a31 100644 --- a/src/rabbit_binary_generator.erl +++ b/src/rabbit_binary_generator.erl @@ -118,10 +118,11 @@ build_content_frames(SizeAcc, FramesAcc, FragSizeRem, FragAcc, [Frag | Frags], BodyPayloadMax, ChannelInt) -> Size = size(Frag), {NewFragSizeRem, NewFragAcc, NewFrags} = - case Size =< FragSizeRem of - true -> {FragSizeRem - Size, [Frag | FragAcc], Frags}; - false -> <<Head:FragSizeRem/binary, Tail/binary>> = Frag, - {0, [Head | FragAcc], [Tail | Frags]} + if Size == 0 -> {FragSizeRem, FragAcc, Frags}; + Size =< FragSizeRem -> {FragSizeRem - Size, [Frag | FragAcc], Frags}; + true -> <<Head:FragSizeRem/binary, Tail/binary>> = + Frag, + {0, [Head | FragAcc], [Tail | Frags]} end, build_content_frames(SizeAcc, FramesAcc, NewFragSizeRem, NewFragAcc, NewFrags, BodyPayloadMax, ChannelInt). diff --git a/src/rabbit_plugin_activator.erl b/src/rabbit_plugin_activator.erl index 274981efed..ef3c5cc250 100644 --- a/src/rabbit_plugin_activator.erl +++ b/src/rabbit_plugin_activator.erl @@ -108,6 +108,7 @@ start() -> WApp == stdlib; WApp == kernel; WApp == sasl; + WApp == crypto; WApp == os_mon -> false; _ -> true end]), diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index 5cf519b795..c6bd2973e7 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -52,6 +52,7 @@ -define(NORMAL_TIMEOUT, 3). -define(CLOSING_TIMEOUT, 1). -define(CHANNEL_TERMINATION_TIMEOUT, 3). +-define(SLEEP_BEFORE_SILENT_CLOSE, 3000). %--------------------------------------------------------------------------- @@ -575,7 +576,11 @@ handle_method0(MethodName, FieldsBin, State) -> end, case State#v1.connection_state of running -> send_exception(State, 0, CompleteReason); - Other -> throw({channel0_error, Other, CompleteReason}) + %% We don't trust the client at this point - force + %% them to wait for a bit so they can't DOS us with + %% repeated failed logins etc. + Other -> timer:sleep(?SLEEP_BEFORE_SILENT_CLOSE), + throw({channel0_error, Other, CompleteReason}) end end. |
