From: Dietmar Maurer Date: Wed, 6 Jun 2018 14:41:30 +0000 (+0200) Subject: limit websocket frame size X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=cdb6932787f050e8fed98923e789e858c3745490;p=pve-http-server.git limit websocket frame size AnyEvent checks rbuf_max after calling the callback (too late), so we can receive larger data. --- diff --git a/PVE/APIServer/AnyEvent.pm b/PVE/APIServer/AnyEvent.pm index eac788b..9efd662 100755 --- a/PVE/APIServer/AnyEvent.pm +++ b/PVE/APIServer/AnyEvent.pm @@ -374,8 +374,8 @@ sub websocket_proxy { $reqstate->{proxyhdl} = AnyEvent::Handle->new( fh => $fh, - rbuf_max => 64*1024, - wbuf_max => 64*10*1024, + rbuf_max => $max_payload_size, + wbuf_max => $max_payload_size*10, timeout => 5, on_eof => sub { my ($hdl) = @_; @@ -398,7 +398,7 @@ sub websocket_proxy { my ($hdl) = @_; my $len = length($hdl->{rbuf}); - my $data = substr($hdl->{rbuf}, 0, $len, ''); + my $data = substr($hdl->{rbuf}, 0, $len > $max_payload_size ? $max_payload_size : $len, ''); my $string; my $payload;