@@ -29,7 +29,7 @@ boost::network::http::impl::ssl_delegate::ssl_delegate(
2929 always_verify_peer_(always_verify_peer) {}
3030
3131void 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,
3333 function<void (system::error_codeconst &)> handler) {
3434 context_.reset (
3535new asio::ssl::context (service_, asio::ssl::context::sslv23_client));
@@ -59,8 +59,11 @@ void boost::network::http::impl::ssl_delegate::connect(
5959if (private_key_file_)
6060 context_->use_private_key_file (*private_key_file_,
6161 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)));
6264 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+
6467if (always_verify_peer_)
6568 socket_->set_verify_callback (boost::asio::ssl::rfc2818_verification (host));
6669 socket_->lowest_layer ().async_connect (