@@ -29,7 +29,7 @@ boost::network::http::impl::ssl_delegate::ssl_delegate(
29
29
always_verify_peer_(always_verify_peer) {}
30
30
31
31
void boost::network::http::impl::ssl_delegate::connect (
32
- asio::ip::tcp::endpoint &endpoint, std::string host,
32
+ asio::ip::tcp::endpoint &endpoint, std::string host, boost:: uint16_t source_port,
33
33
function<void (system::error_codeconst &)> handler) {
34
34
context_.reset (
35
35
new asio::ssl::context (service_, asio::ssl::context::sslv23_client));
@@ -59,8 +59,11 @@ void boost::network::http::impl::ssl_delegate::connect(
59
59
if (private_key_file_)
60
60
context_->use_private_key_file (*private_key_file_,
61
61
boost::asio::ssl::context::pem);
62
+
63
+ tcp_socket_.reset (new asio::ip::tcp::socket (service_,asio::ip::tcp::endpoint (asio::ip::tcp::v4 (), source_port)));
62
64
socket_.reset (
63
- new asio::ssl::stream<asio::ip::tcp::socket>(service_, *context_));
65
+ new asio::ssl::stream<asio::ip::tcp::socket&>(*(tcp_socket_.get ()), *context_));
66
+
64
67
if (always_verify_peer_)
65
68
socket_->set_verify_callback (boost::asio::ssl::rfc2818_verification (host));
66
69
socket_->lowest_layer ().async_connect (