websocket: set $max_payload_size = 128*1024; (131072)

AnyEvent checks rbuf_max after calling the callback (too late), so
we can receive larger data, because AnyEvent uses MAX_READ_SIZE=131072
to fill the buffer.

So a more elegant solution is to set $max_payload_size=128*1024. At least
I am not able to receive rbuf larger than 128*1024 now. But I keep the
protection from the previous patch - just to be sure.
This commit is contained in:
Dietmar Maurer 2018-06-06 17:30:40 +02:00
parent cdb6932787
commit ed8d2557ae

View File

@ -345,7 +345,7 @@ sub websocket_proxy {
my $remhost;
my $remport;
my $max_payload_size = 65536;
my $max_payload_size = 128*1024;
my $binary;
if ($wsproto eq 'binary') {
@ -375,7 +375,7 @@ sub websocket_proxy {
$reqstate->{proxyhdl} = AnyEvent::Handle->new(
fh => $fh,
rbuf_max => $max_payload_size,
wbuf_max => $max_payload_size*10,
wbuf_max => $max_payload_size*5,
timeout => 5,
on_eof => sub {
my ($hdl) = @_;