From 4c34774b7eb787e37892399f2daddba68ec277e3 Mon Sep 17 00:00:00 2001
From: Kirill Kinduk <evilbluebeaver@gmail.com>
Date: Fri, 25 Aug 2017 12:08:26 +0300
Subject: Add max_frame_size option for websocket handlers

Option allows to limit a frame by size before decoding its payload.

LH: I have added a test for when the limit is reached on a nofin
fragmented frame (the last commit addressed that case but it had
no test). I have fixed formatting and other, and changed the
default value to infinity since it might otherwise be incompatible
with existing code. I also added documentation and a bunch of other
minor changes.
---
 doc/src/manual/cowboy_websocket.asciidoc | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'doc/src/manual/cowboy_websocket.asciidoc')

diff --git a/doc/src/manual/cowboy_websocket.asciidoc b/doc/src/manual/cowboy_websocket.asciidoc
index 40864c5..5d686b1 100644
--- a/doc/src/manual/cowboy_websocket.asciidoc
+++ b/doc/src/manual/cowboy_websocket.asciidoc
@@ -153,6 +153,7 @@ Cowboy does it automatically for you.
 opts() :: #{
     compress => boolean(),
     idle_timeout => timeout(),
+    max_frame_size => non_neg_integer() | infinity,
     req_filter => fun((cowboy_req:req()) -> map())
 }
 ----
@@ -181,6 +182,13 @@ idle_timeout (60000)::
     connection open without receiving anything from
     the client.
 
+max_frame_size (infinity)::
+    Maximum frame size allowed by this Websocket
+    handler. Cowboy will close the connection when
+    a client attempts to send a frame that goes over
+    this limit. For fragmented frames this applies
+    to the size of the reconstituted frame.
+
 req_filter::
     A function applied to the Req to compact it and
     only keep required information. The Req is only
-- 
cgit v1.2.3

