@@ -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