fix(client): dont call close() inside Request

Only call close() in the Response, which should already return a
responding `Connection: close`.

Closes #519
This commit is contained in:
Sean McArthur
2015-05-09 22:07:34 -07:00
parent 38f40c7f6a
commit 3334fca278
2 changed files with 7 additions and 10 deletions

View File

@@ -7,6 +7,8 @@ use std::env;
use std::io; use std::io;
use hyper::Client; use hyper::Client;
use hyper::header::Connection;
use hyper::header::ConnectionOption::Close;
fn main() { fn main() {
env_logger::init().unwrap(); env_logger::init().unwrap();
@@ -21,10 +23,9 @@ fn main() {
let mut client = Client::new(); let mut client = Client::new();
let mut res = match client.get(&*url).send() { let mut res = client.get(&*url)
Ok(res) => res, .header(Connection(vec![Close]))
Err(err) => panic!("Failed to connect: {:?}", err) .send().unwrap();
};
println!("Response: {}", res.status); println!("Response: {}", res.status);
println!("Headers:\n{}", res.headers); println!("Headers:\n{}", res.headers);

View File

@@ -1,7 +1,6 @@
//! Client Requests //! Client Requests
use std::marker::PhantomData; use std::marker::PhantomData;
use std::io::{self, Write, BufWriter}; use std::io::{self, Write, BufWriter};
use std::net::Shutdown;
use url::Url; use url::Url;
@@ -9,7 +8,7 @@ use method::{self, Method};
use header::Headers; use header::Headers;
use header::{self, Host}; use header::{self, Host};
use net::{NetworkStream, NetworkConnector, HttpConnector, Fresh, Streaming}; use net::{NetworkStream, NetworkConnector, HttpConnector, Fresh, Streaming};
use http::{self, HttpWriter, LINE_ENDING}; use http::{HttpWriter, LINE_ENDING};
use http::HttpWriter::{ThroughWriter, ChunkedWriter, SizedWriter, EmptyWriter}; use http::HttpWriter::{ThroughWriter, ChunkedWriter, SizedWriter, EmptyWriter};
use version; use version;
use client::{Response, get_host_and_port}; use client::{Response, get_host_and_port};
@@ -154,10 +153,7 @@ impl Request<Streaming> {
/// ///
/// Consumes the Request. /// Consumes the Request.
pub fn send(self) -> ::Result<Response> { pub fn send(self) -> ::Result<Response> {
let mut raw = try!(self.body.end()).into_inner().unwrap(); // end() already flushes let raw = try!(self.body.end()).into_inner().unwrap(); // end() already flushes
if !http::should_keep_alive(self.version, &self.headers) {
try!(raw.close(Shutdown::Write));
}
Response::new(raw) Response::new(raw)
} }
} }