@@ -101,12 +101,14 @@ struct http_async_connection
101101 string_type host_ = host (request);
102102 std::uint16_t source_port = request.source_port ();
103103
104+ auto sni_hostname = request.sni_hostname ();
105+
104106 auto self = this ->shared_from_this ();
105107 resolve_ (resolver_, host_, port_,
106108 request_strand_.wrap (
107109 [=] (boost::system::error_code const &ec,
108110 resolver_iterator_pair endpoint_range) {
109- self->handle_resolved (host_, port_, source_port, get_body,
111+ self->handle_resolved (host_, port_, source_port, sni_hostname, get_body,
110112 callback, generator, ec, endpoint_range);
111113 }));
112114 if (timeout_ > 0 ) {
@@ -139,7 +141,7 @@ struct http_async_connection
139141 }
140142
141143 void handle_resolved (string_type host, std::uint16_t port,
142- std::uint16_t source_port, bool get_body,
144+ std::uint16_t source_port, optional<string_type> sni_hostname, bool get_body,
143145 body_callback_function_type callback,
144146 body_generator_function_type generator,
145147 boost::system::error_code const & ec,
@@ -151,10 +153,10 @@ struct http_async_connection
151153 boost::asio::ip::tcp::endpoint endpoint (iter->endpoint ().address (), port);
152154 auto self = this ->shared_from_this ();
153155 delegate_->connect (
154- endpoint, host, source_port,
156+ endpoint, host, source_port, sni_hostname,
155157 request_strand_.wrap ([=] (boost::system::error_code const &ec) {
156158 auto iter_copy = iter;
157- self->handle_connected (host, port, source_port, get_body, callback,
159+ self->handle_connected (host, port, source_port, sni_hostname, get_body, callback,
158160 generator, std::make_pair (++iter_copy, resolver_iterator ()), ec);
159161 }));
160162 } else {
@@ -163,7 +165,7 @@ struct http_async_connection
163165 }
164166
165167 void handle_connected (string_type host, std::uint16_t port,
166- std::uint16_t source_port, bool get_body,
168+ std::uint16_t source_port, optional<string_type> sni_hostname, bool get_body,
167169 body_callback_function_type callback,
168170 body_generator_function_type generator,
169171 resolver_iterator_pair endpoint_range,
@@ -186,10 +188,10 @@ struct http_async_connection
186188 boost::asio::ip::tcp::endpoint endpoint (iter->endpoint ().address (), port);
187189 auto self = this ->shared_from_this ();
188190 delegate_->connect (
189- endpoint, host, source_port,
191+ endpoint, host, source_port, sni_hostname,
190192 request_strand_.wrap ([=] (boost::system::error_code const &ec) {
191193 auto iter_copy = iter;
192- self->handle_connected (host, port, source_port, get_body, callback,
194+ self->handle_connected (host, port, source_port, sni_hostname, get_body, callback,
193195 generator, std::make_pair (++iter_copy, resolver_iterator ()),
194196 ec);
195197 }));
0 commit comments