1
0
mirror of https://github.com/fafhrd91/actix-web synced 2024-11-27 17:52:56 +01:00

allocate enough space

This commit is contained in:
Nikolay Kim 2019-03-31 17:05:02 -07:00
parent ce8294740e
commit e4b3f79458

View File

@ -172,13 +172,14 @@ impl Parser {
}; };
if payload_len < 126 { if payload_len < 126 {
dst.reserve(p_len + 2 + if mask { 4 } else { 0 });
dst.put_slice(&[one, two | payload_len as u8]); dst.put_slice(&[one, two | payload_len as u8]);
} else if payload_len <= 65_535 { } else if payload_len <= 65_535 {
dst.reserve(p_len + 4); dst.reserve(p_len + 4 + if mask { 4 } else { 0 });
dst.put_slice(&[one, two | 126]); dst.put_slice(&[one, two | 126]);
dst.put_u16_be(payload_len as u16); dst.put_u16_be(payload_len as u16);
} else { } else {
dst.reserve(p_len + 10); dst.reserve(p_len + 10 + if mask { 4 } else { 0 });
dst.put_slice(&[one, two | 127]); dst.put_slice(&[one, two | 127]);
dst.put_u64_be(payload_len as u64); dst.put_u64_be(payload_len as u64);
}; };
@ -186,7 +187,7 @@ impl Parser {
if mask { if mask {
let mask = rand::random::<u32>(); let mask = rand::random::<u32>();
dst.put_u32_le(mask); dst.put_u32_le(mask);
dst.extend_from_slice(payload.as_ref()); dst.put_slice(payload.as_ref());
let pos = dst.len() - payload_len; let pos = dst.len() - payload_len;
apply_mask(&mut dst[pos..], mask); apply_mask(&mut dst[pos..], mask);
} else { } else {