mirror of https://github.com/fafhrd91/actix-web
Split unsafe block HttpServiceHandlerResponse
Also add explanation of the safety of the usage of `unsafe`
This commit is contained in:
parent
50397fb63b
commit
68bb76beec
|
@ -466,16 +466,18 @@ where
|
||||||
State::Unknown(ref mut data) => {
|
State::Unknown(ref mut data) => {
|
||||||
if let Some(ref mut item) = data {
|
if let Some(ref mut item) = data {
|
||||||
loop {
|
loop {
|
||||||
unsafe {
|
// Safety - we only write to the returned slice.
|
||||||
let b = item.1.bytes_mut();
|
let b = unsafe { item.1.bytes_mut() };
|
||||||
let n = try_ready!(item.0.poll_read(b));
|
let n = try_ready!(item.0.poll_read(b));
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
return Ok(Async::Ready(()));
|
return Ok(Async::Ready(()));
|
||||||
}
|
}
|
||||||
item.1.advance_mut(n);
|
// Safety - we know that 'n' bytes have
|
||||||
if item.1.len() >= HTTP2_PREFACE.len() {
|
// been initialized via the contract of
|
||||||
break;
|
// 'poll_read'
|
||||||
}
|
unsafe { item.1.advance_mut(n) };
|
||||||
|
if item.1.len() >= HTTP2_PREFACE.len() {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue