mirror of
https://github.com/actix/actix-web.git
synced 2024-12-21 23:56:35 +00:00
set host header for http1 connections
This commit is contained in:
parent
9bcd5d6664
commit
b921abf18f
1 changed files with 25 additions and 2 deletions
|
@ -1,12 +1,14 @@
|
||||||
|
use std::io::Write;
|
||||||
use std::{io, time};
|
use std::{io, time};
|
||||||
|
|
||||||
use actix_codec::{AsyncRead, AsyncWrite, Framed};
|
use actix_codec::{AsyncRead, AsyncWrite, Framed};
|
||||||
use bytes::Bytes;
|
use bytes::{BufMut, Bytes, BytesMut};
|
||||||
use futures::future::{ok, Either};
|
use futures::future::{ok, Either};
|
||||||
use futures::{Async, Future, Poll, Sink, Stream};
|
use futures::{Async, Future, Poll, Sink, Stream};
|
||||||
|
|
||||||
use crate::error::PayloadError;
|
use crate::error::PayloadError;
|
||||||
use crate::h1;
|
use crate::h1;
|
||||||
|
use crate::http::header::{IntoHeaderValue, HOST};
|
||||||
use crate::message::{RequestHead, ResponseHead};
|
use crate::message::{RequestHead, ResponseHead};
|
||||||
use crate::payload::{Payload, PayloadStream};
|
use crate::payload::{Payload, PayloadStream};
|
||||||
|
|
||||||
|
@ -17,7 +19,7 @@ use crate::body::{BodySize, MessageBody};
|
||||||
|
|
||||||
pub(crate) fn send_request<T, B>(
|
pub(crate) fn send_request<T, B>(
|
||||||
io: T,
|
io: T,
|
||||||
head: RequestHead,
|
mut head: RequestHead,
|
||||||
body: B,
|
body: B,
|
||||||
created: time::Instant,
|
created: time::Instant,
|
||||||
pool: Option<Acquired<T>>,
|
pool: Option<Acquired<T>>,
|
||||||
|
@ -26,6 +28,27 @@ where
|
||||||
T: AsyncRead + AsyncWrite + 'static,
|
T: AsyncRead + AsyncWrite + 'static,
|
||||||
B: MessageBody,
|
B: MessageBody,
|
||||||
{
|
{
|
||||||
|
// set request host header
|
||||||
|
if !head.headers.contains_key(HOST) {
|
||||||
|
if let Some(host) = head.uri.host() {
|
||||||
|
let mut wrt = BytesMut::with_capacity(host.len() + 5).writer();
|
||||||
|
|
||||||
|
let _ = match head.uri.port_u16() {
|
||||||
|
None | Some(80) | Some(443) => write!(wrt, "{}", host),
|
||||||
|
Some(port) => write!(wrt, "{}:{}", host, port),
|
||||||
|
};
|
||||||
|
|
||||||
|
match wrt.get_mut().take().freeze().try_into() {
|
||||||
|
Ok(value) => {
|
||||||
|
head.headers.insert(HOST, value);
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
log::error!("Can not set HOST header {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let io = H1Connection {
|
let io = H1Connection {
|
||||||
created,
|
created,
|
||||||
pool,
|
pool,
|
||||||
|
|
Loading…
Reference in a new issue