| @@ -13,4 +13,5 @@ fn hello(_: Request, res: Response) { | |||||||
|  |  | ||||||
| fn main() { | fn main() { | ||||||
|     hyper::Server::http(Ipv4Addr(127, 0, 0, 1), 3000).listen(hello).unwrap(); |     hyper::Server::http(Ipv4Addr(127, 0, 0, 1), 3000).listen(hello).unwrap(); | ||||||
|  |     println!("Listening on http://127.0.0.1:3000"); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -52,4 +52,5 @@ fn echo(mut req: Request, mut res: Response) { | |||||||
| fn main() { | fn main() { | ||||||
|     let server = Server::http(Ipv4Addr(127, 0, 0, 1), 1337); |     let server = Server::http(Ipv4Addr(127, 0, 0, 1), 1337); | ||||||
|     server.listen(echo).unwrap(); |     server.listen(echo).unwrap(); | ||||||
|  |     println!("Listening on http://127.0.0.1:1337"); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -114,7 +114,7 @@ impl Headers { | |||||||
|         loop { |         loop { | ||||||
|             match try!(http::read_header(rdr)) { |             match try!(http::read_header(rdr)) { | ||||||
|                 Some((name, value)) => { |                 Some((name, value)) => { | ||||||
|                     debug!("raw header: {}={}", name, value); |                     debug!("raw header: {}={}", name, value[].to_ascii()); | ||||||
|                     let name = CaseInsensitive(Owned(name)); |                     let name = CaseInsensitive(Owned(name)); | ||||||
|                     let item = match headers.data.entry(name) { |                     let item = match headers.data.entry(name) { | ||||||
|                         Vacant(entry) => entry.set(RWLock::new(Item::raw(vec![]))), |                         Vacant(entry) => entry.set(RWLock::new(Item::raw(vec![]))), | ||||||
| @@ -389,7 +389,6 @@ fn get_or_parse<H: Header + HeaderFormat>(item: &RWLock<Item>) -> Option<&RWLock | |||||||
| } | } | ||||||
|  |  | ||||||
| fn downcast<H: Header + HeaderFormat>(read: &Item) -> &H { | fn downcast<H: Header + HeaderFormat>(read: &Item) -> &H { | ||||||
|     debug!("downcasting {}", *read); |  | ||||||
|     match read.typed { |     match read.typed { | ||||||
|         Some(ref val) => unsafe { val.downcast_ref_unchecked() }, |         Some(ref val) => unsafe { val.downcast_ref_unchecked() }, | ||||||
|         _ => unreachable!() |         _ => unreachable!() | ||||||
| @@ -397,7 +396,6 @@ fn downcast<H: Header + HeaderFormat>(read: &Item) -> &H { | |||||||
| } | } | ||||||
|  |  | ||||||
| fn downcast_mut<H: Header + HeaderFormat>(write: &mut Item) -> &mut H { | fn downcast_mut<H: Header + HeaderFormat>(write: &mut Item) -> &mut H { | ||||||
|     debug!("downcasting {}", *write); |  | ||||||
|     match write.typed { |     match write.typed { | ||||||
|         Some(ref mut val) => unsafe { val.downcast_mut_unchecked() }, |         Some(ref mut val) => unsafe { val.downcast_mut_unchecked() }, | ||||||
|         _ => unreachable!() |         _ => unreachable!() | ||||||
|   | |||||||
| @@ -522,7 +522,7 @@ pub fn read_header<R: Reader>(stream: &mut R) -> HttpResult<Option<RawHeaderLine | |||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     debug!("header value = {}", value); |     debug!("header value = {}", value[].to_ascii()); | ||||||
|  |  | ||||||
|     match try!(stream.read_byte()) { |     match try!(stream.read_byte()) { | ||||||
|         LF => Ok(Some((name, value))), |         LF => Ok(Some((name, value))), | ||||||
|   | |||||||
| @@ -11,6 +11,7 @@ pub use self::response::Response; | |||||||
|  |  | ||||||
| pub use net::{Fresh, Streaming}; | pub use net::{Fresh, Streaming}; | ||||||
|  |  | ||||||
|  | use HttpError::HttpIoError; | ||||||
| use {HttpResult}; | use {HttpResult}; | ||||||
| use header::common::Connection; | use header::common::Connection; | ||||||
| use header::common::connection::{KeepAlive, Close}; | use header::common::connection::{KeepAlive, Close}; | ||||||
| @@ -92,9 +93,13 @@ impl<L: NetworkListener<S, A>, S: NetworkStream, A: NetworkAcceptor<S>> Server<L | |||||||
|                                 let mut res = Response::new(&mut wrt); |                                 let mut res = Response::new(&mut wrt); | ||||||
|                                 let req = match Request::new(&mut rdr, addr) { |                                 let req = match Request::new(&mut rdr, addr) { | ||||||
|                                     Ok(req) => req, |                                     Ok(req) => req, | ||||||
|  |                                     Err(e@HttpIoError(_)) => { | ||||||
|  |                                         debug!("ioerror in keepalive loop = {}", e); | ||||||
|  |                                         return; | ||||||
|  |                                     } | ||||||
|                                     Err(e) => { |                                     Err(e) => { | ||||||
|                                         //TODO: send a 400 response |                                         //TODO: send a 400 response | ||||||
|                                         error!("request error: {}", e); |                                         error!("request error = {}", e); | ||||||
|                                         return; |                                         return; | ||||||
|                                     } |                                     } | ||||||
|                                 }; |                                 }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user