diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2012-07-17 11:26:03 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2012-07-17 11:26:03 +0100 |
| commit | 6eb276a95c4d4ef370f22ce7b5ba62719a3bbba3 (patch) | |
| tree | 7824b6592da19d2fd5985b9410c843a977f8898b /src | |
| parent | 0008e5f11fa2f3f7b9c36e89dea7a94f85aeef21 (diff) | |
| download | rabbitmq-server-git-6eb276a95c4d4ef370f22ce7b5ba62719a3bbba3.tar.gz | |
allow clients to exceed frame size by a little bit
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_reader.erl | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/rabbit_reader.erl b/src/rabbit_reader.erl index ee9b22c2ec..477961ae76 100644 --- a/src/rabbit_reader.erl +++ b/src/rabbit_reader.erl @@ -589,9 +589,14 @@ post_process_frame(_Frame, _ChPid, State) -> %%-------------------------------------------------------------------------- +%% We allow clients to exceed the frame size a little bit since quite +%% a few get it wrong - off-by 1 or 8 (empty frame size) are typical. +-define(FRAME_SIZE_FUDGE, ?EMPTY_FRAME_SIZE). + handle_input(frame_header, <<Type:8,Channel:16,PayloadSize:32>>, #v1{connection = #connection{frame_max = FrameMax}}) - when FrameMax /= 0 andalso PayloadSize > FrameMax - ?EMPTY_FRAME_SIZE -> + when FrameMax /= 0 andalso + PayloadSize > FrameMax - ?EMPTY_FRAME_SIZE + ?FRAME_SIZE_FUDGE -> throw({frame_too_large, Type, Channel, PayloadSize, FrameMax - ?EMPTY_FRAME_SIZE}); handle_input(frame_header, <<Type:8,Channel:16,PayloadSize:32>>, State) -> |
