[pve-devel] [PATCH pve-client 1/2] parse_web_socket_frame: use $wsbuf_ref directly, so that we really consume data
Dietmar Maurer
dietmar at proxmox.com
Wed Jun 6 11:30:12 CEST 2018
Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
---
PVE/APIClient/Commands/lxc.pm | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/PVE/APIClient/Commands/lxc.pm b/PVE/APIClient/Commands/lxc.pm
index 346df51..df72625 100644
--- a/PVE/APIClient/Commands/lxc.pm
+++ b/PVE/APIClient/Commands/lxc.pm
@@ -71,15 +71,13 @@ my $create_websockt_frame = sub {
my $parse_web_socket_frame = sub {
my ($wsbuf_ref) = @_;
- my $wsbuf = $$wsbuf_ref;
-
my $payload;
my $req_close = 0;
- while (my $len = length($wsbuf)) {
+ while (my $len = length($$wsbuf_ref)) {
last if $len < 2;
- my $hdr = unpack('C', substr($wsbuf, 0, 1));
+ my $hdr = unpack('C', substr($$wsbuf_ref, 0, 1));
my $opcode = $hdr & 0b00001111;
my $fin = $hdr & 0b10000000;
@@ -88,7 +86,7 @@ my $parse_web_socket_frame = sub {
my $rsv = $hdr & 0b01110000;
die "received websocket frame with RSV flags\n" if $rsv;
- my $payload_len = unpack 'C', substr($wsbuf, 1, 1);
+ my $payload_len = unpack 'C', substr($$wsbuf_ref, 1, 1);
my $masked = $payload_len & 0b10000000;
die "received masked websocket frame from server\n" if $masked;
@@ -97,11 +95,11 @@ my $parse_web_socket_frame = sub {
$payload_len = $payload_len & 0b01111111;
if ($payload_len == 126) {
last if $len < 4;
- $payload_len = unpack('n', substr($wsbuf, $offset, 2));
+ $payload_len = unpack('n', substr($$wsbuf_ref, $offset, 2));
$offset += 2;
} elsif ($payload_len == 127) {
last if $len < 10;
- $payload_len = unpack('Q>', substr($wsbuf, $offset, 8));
+ $payload_len = unpack('Q>', substr($$wsbuf_ref, $offset, 8));
$offset += 8;
}
@@ -110,7 +108,7 @@ my $parse_web_socket_frame = sub {
last if $len < ($offset + $payload_len);
- my $data = substr($wsbuf, 0, $offset + $payload_len, ''); # now consume data
+ my $data = substr($$wsbuf_ref, 0, $offset + $payload_len, ''); # now consume data
my $frame_data = substr($data, $offset, $payload_len);
--
2.11.0
More information about the pve-devel
mailing list