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