@@ -95,10 +95,12 @@ struct http_async_connection
9595this ->method = method;
9696 boost::uint16_t port_ =port (request);
9797string_type host_ =host (request);
98+ boost::uint16_t source_port = request.getSourcePort ();
99+
98100resolve_ (resolver_, host_, port_,
99101 request_strand_.wrap (boost::bind (
100102 &this_type::handle_resolved,this_type::shared_from_this (),
101- host_, port_, get_body, callback,
103+ host_, port_,source_port, get_body, callback,
102104 generator, boost::arg<1 >(), boost::arg<2 >())));
103105if (timeout_ >0 ) {
104106 timer_.expires_from_now (boost::posix_time::seconds (timeout_));
@@ -129,7 +131,7 @@ struct http_async_connection
129131 is_timedout_ =true ;
130132 }
131133
132- void handle_resolved (string_type host, boost::uint16_t port,bool get_body,
134+ void handle_resolved (string_type host, boost::uint16_t port,boost:: uint16_t source_port, bool get_body,
133135 body_callback_function_type callback,
134136 body_generator_function_type generator,
135137 boost::system::error_codeconst & ec,
@@ -141,10 +143,10 @@ struct http_async_connection
141143 resolver_iterator iter =boost::begin (endpoint_range);
142144 asio::ip::tcp::endpointendpoint (iter->endpoint ().address (), port);
143145 delegate_->connect (
144- endpoint, host,
146+ endpoint, host, source_port,
145147 request_strand_.wrap (boost::bind (
146148 &this_type::handle_connected,this_type::shared_from_this (), host,
147- port, get_body, callback, generator,
149+ port,source_port, get_body, callback, generator,
148150std::make_pair (++iter,resolver_iterator ()),
149151 placeholders::error)));
150152 }else {
@@ -154,7 +156,7 @@ struct http_async_connection
154156 }
155157 }
156158
157- void handle_connected (string_type host, boost::uint16_t port,bool get_body,
159+ void handle_connected (string_type host, boost::uint16_t port,boost:: uint16_t source_port, bool get_body,
158160 body_callback_function_type callback,
159161 body_generator_function_type generator,
160162 resolver_iterator_pair endpoint_range,
@@ -174,10 +176,10 @@ struct http_async_connection
174176 resolver_iterator iter =boost::begin (endpoint_range);
175177 asio::ip::tcp::endpointendpoint (iter->endpoint ().address (), port);
176178 delegate_->connect (
177- endpoint, host,
179+ endpoint, host, source_port,
178180 request_strand_.wrap (boost::bind (
179181 &this_type::handle_connected,this_type::shared_from_this (),
180- host, port, get_body, callback, generator,
182+ host, port,source_port, get_body, callback, generator,
181183std::make_pair (++iter,resolver_iterator ()),
182184 placeholders::error)));
183185 }else {