refactor(http): remove the commented out code in http::h1
This commit is contained in:
@@ -5,112 +5,3 @@ mod decode;
|
|||||||
mod encode;
|
mod encode;
|
||||||
pub mod parse;
|
pub mod parse;
|
||||||
|
|
||||||
/*
|
|
||||||
fn should_have_response_body(method: &Method, status: u16) -> bool {
|
|
||||||
trace!("should_have_response_body({:?}, {})", method, status);
|
|
||||||
match (method, status) {
|
|
||||||
(&Method::Head, _) |
|
|
||||||
(_, 100...199) |
|
|
||||||
(_, 204) |
|
|
||||||
(_, 304) |
|
|
||||||
(&Method::Connect, 200...299) => false,
|
|
||||||
_ => true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
const MAX_INVALID_RESPONSE_BYTES: usize = 1024 * 128;
|
|
||||||
impl HttpMessage for Http11Message {
|
|
||||||
|
|
||||||
fn get_incoming(&mut self) -> ::Result<ResponseHead> {
|
|
||||||
unimplemented!();
|
|
||||||
/*
|
|
||||||
try!(self.flush_outgoing());
|
|
||||||
let stream = match self.stream.take() {
|
|
||||||
Some(stream) => stream,
|
|
||||||
None => {
|
|
||||||
// The message was already in the reading state...
|
|
||||||
// TODO Decide what happens in case we try to get a new incoming at that point
|
|
||||||
return Err(From::from(
|
|
||||||
io::Error::new(io::ErrorKind::Other,
|
|
||||||
"Read already in progress")));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let expected_no_content = stream.previous_response_expected_no_content();
|
|
||||||
trace!("previous_response_expected_no_content = {}", expected_no_content);
|
|
||||||
|
|
||||||
let mut stream = BufReader::new(stream);
|
|
||||||
|
|
||||||
let mut invalid_bytes_read = 0;
|
|
||||||
let head;
|
|
||||||
loop {
|
|
||||||
head = match parse_response(&mut stream) {
|
|
||||||
Ok(head) => head,
|
|
||||||
Err(::Error::Version)
|
|
||||||
if expected_no_content && invalid_bytes_read < MAX_INVALID_RESPONSE_BYTES => {
|
|
||||||
trace!("expected_no_content, found content");
|
|
||||||
invalid_bytes_read += 1;
|
|
||||||
stream.consume(1);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
self.stream = Some(stream.into_inner());
|
|
||||||
return Err(e);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
let raw_status = head.subject;
|
|
||||||
let headers = head.headers;
|
|
||||||
|
|
||||||
let method = self.method.take().unwrap_or(Method::Get);
|
|
||||||
|
|
||||||
let is_empty = !should_have_response_body(&method, raw_status.0);
|
|
||||||
stream.get_mut().set_previous_response_expected_no_content(is_empty);
|
|
||||||
// According to https://tools.ietf.org/html/rfc7230#section-3.3.3
|
|
||||||
// 1. HEAD responses, and Status 1xx, 204, and 304 cannot have a body.
|
|
||||||
// 2. Status 2xx to a CONNECT cannot have a body.
|
|
||||||
// 3. Transfer-Encoding: chunked has a chunked body.
|
|
||||||
// 4. If multiple differing Content-Length headers or invalid, close connection.
|
|
||||||
// 5. Content-Length header has a sized body.
|
|
||||||
// 6. Not Client.
|
|
||||||
// 7. Read till EOF.
|
|
||||||
self.reader = Some(if is_empty {
|
|
||||||
SizedReader(stream, 0)
|
|
||||||
} else {
|
|
||||||
if let Some(&TransferEncoding(ref codings)) = headers.get() {
|
|
||||||
if codings.last() == Some(&Chunked) {
|
|
||||||
ChunkedReader(stream, None)
|
|
||||||
} else {
|
|
||||||
trace!("not chunked. read till eof");
|
|
||||||
EofReader(stream)
|
|
||||||
}
|
|
||||||
} else if let Some(&ContentLength(len)) = headers.get() {
|
|
||||||
SizedReader(stream, len)
|
|
||||||
} else if headers.has::<ContentLength>() {
|
|
||||||
trace!("illegal Content-Length: {:?}", headers.get_raw("Content-Length"));
|
|
||||||
return Err(Error::Header);
|
|
||||||
} else {
|
|
||||||
trace!("neither Transfer-Encoding nor Content-Length");
|
|
||||||
EofReader(stream)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
trace!("Http11Message.reader = {:?}", self.reader);
|
|
||||||
|
|
||||||
|
|
||||||
Ok(ResponseHead {
|
|
||||||
headers: headers,
|
|
||||||
raw_status: raw_status,
|
|
||||||
version: head.version,
|
|
||||||
})
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user