mirror of
https://github.com/fafhrd91/actix-web
synced 2024-11-24 08:22:59 +01:00
fix content length serialization #33
This commit is contained in:
parent
9040f588af
commit
b49eadf7e5
@ -309,16 +309,10 @@ pub(crate) fn write_content_length(mut n: usize, bytes: &mut BytesMut) {
|
|||||||
let d1 = (n % 100) << 1;
|
let d1 = (n % 100) << 1;
|
||||||
n /= 100;
|
n /= 100;
|
||||||
unsafe {ptr::copy_nonoverlapping(
|
unsafe {ptr::copy_nonoverlapping(
|
||||||
DEC_DIGITS_LUT.as_ptr().offset(d1 as isize), buf.as_mut_ptr().offset(18), 2)};
|
DEC_DIGITS_LUT.as_ptr().offset(d1 as isize), buf.as_mut_ptr().offset(19), 2)};
|
||||||
|
|
||||||
// decode last 1 or 2 chars
|
// decode last 1
|
||||||
if n < 10 {
|
buf[18] = (n as u8) + b'0';
|
||||||
buf[20] = (n as u8) + b'0';
|
|
||||||
} else {
|
|
||||||
let d1 = n << 1;
|
|
||||||
unsafe {ptr::copy_nonoverlapping(
|
|
||||||
DEC_DIGITS_LUT.as_ptr().offset(d1 as isize), buf.as_mut_ptr().offset(17), 2)};
|
|
||||||
}
|
|
||||||
|
|
||||||
bytes.extend_from_slice(&buf);
|
bytes.extend_from_slice(&buf);
|
||||||
} else {
|
} else {
|
||||||
@ -394,4 +388,29 @@ mod tests {
|
|||||||
date(&mut buf2);
|
date(&mut buf2);
|
||||||
assert_eq!(buf1, buf2);
|
assert_eq!(buf1, buf2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_write_content_length() {
|
||||||
|
let mut bytes = BytesMut::new();
|
||||||
|
write_content_length(0, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 0\r\n"[..]);
|
||||||
|
write_content_length(9, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 9\r\n"[..]);
|
||||||
|
write_content_length(10, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 10\r\n"[..]);
|
||||||
|
write_content_length(99, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 99\r\n"[..]);
|
||||||
|
write_content_length(100, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 100\r\n"[..]);
|
||||||
|
write_content_length(101, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 101\r\n"[..]);
|
||||||
|
write_content_length(998, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 998\r\n"[..]);
|
||||||
|
write_content_length(1000, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 1000\r\n"[..]);
|
||||||
|
write_content_length(1001, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 1001\r\n"[..]);
|
||||||
|
write_content_length(5909, &mut bytes);
|
||||||
|
assert_eq!(bytes.take().freeze(), b"\r\ncontent-length: 5909\r\n"[..]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user