Merge pull request #520 from hyperium/conn-close
fix(client): dont call close() inside Request
This commit is contained in:
		| @@ -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); | ||||||
|   | |||||||
| @@ -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) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user