h1.rs
Contains an unbounded block loopMultiple standard HTTP request lines in source
SHA-256e6738a8204d3d2a8ecd68d892082b0df72f1c941f61b4c6ddd237d7a98d7692b
MaleculeH₂(Cm₃Db)Md₃(In₆PaPt)
Evidence
1use std::collections::VecDeque;
2use std::net::SocketAddr;
3use std::rc::Rc;
4use std::time::{Duration, Instant};
5
6use bytes::BytesMut;
7use futures::{Async, Future, Poll};
8use tokio_timer::Delay;
9
10use error::{Error, PayloadError};
11use http::{StatusCode, Version};
12use payload::{Payload, PayloadStatus, PayloadWriter};
13
14use super::error::ServerError;
15use super::h1decoder::{DecoderError, H1Decoder, Message};
16use super::h1writer::H1Writer;
17use super::input::PayloadType;
18use super::settings::WorkerSettings;
19use super::Writer;
20use super::{HttpHandler, HttpHandlerTask, IoStream};
21
22const MAX_PIPELINED_MESSAGES: usize = 16;
⋯4 lines
191:9… }
192 }
193 }
194
195 self.poll_io();
196
197 loop {
198 match self.poll_handler()? {
199 Async::Ready(true) => {
200 self.poll_io();
201 …
⋯5 lines
490}
491
492#[cfg(test)]
493mod tests {
494 use std::net::Shutdown;
495 use std::{cmp, io, time};
496
497 use bytes::{Buf, Bytes, BytesMut};
498 use http::{Method, Version};
499 use tokio_io::{AsyncRead, AsyncWrite};
500
501 use super::*;
502 use application::HttpApplication;
503 use httpmessage::HttpMessage;
504 use server::h1decoder::Message;
505 use server::settings::{ServerSettings, WorkerSettings};
506 use server::{Connections, KeepAlive, Request};
507
508 fn wrk_settings() -> Rc<WorkerSettings<HttpApplication>> {
509 Rc::new(WorkerSettings::<HttpApplication>::new(
510 …
624:70… :Error> {
625 Ok(Async::NotReady)
626 }
627 }
628
629 #[test]
630 fn test_req_parse1() {
631 let buf = Buffer::new("GET /test HTTP/1.1\r\n\r\n");
632 let readbuf = BytesMut::new();
633 let settings = Rc::new(wrk_settings());
634
635 let mut h1 = Htt …
824:31… ::from(
825 "GET /test HTTP/1.1\r\n\
826 Set-Cookie: c1=cookie1\r\n\
827 Set-Cookie: c2=cookie2\r\n\r\n",
828 );
829 let settings = wrk_settings();
830 let mut reader = H1Decoder::new();
831 let m …