@@ -17,7 +17,9 @@ namespace boost { namespace network { namespace http { namespace impl {
17
17
18
18
template <class Tag , unsigned version_major, unsigned version_minor>
19
19
struct http_async_connection
20
- : async_connection_base<Tag,version_major,version_minor> {
20
+ : async_connection_base<Tag,version_major,version_minor>,
21
+ boost::enable_shared_from_this<http_async_connection<Tag,version_major,version_minor> >
22
+ {
21
23
typedef async_connection_base<Tag,version_major,version_minor> base;
22
24
typedef typename base::resolver_type resolver_type;
23
25
typedef typename base::resolver_base::resolver_iterator_pair resolver_iterator_pair;
@@ -32,7 +34,8 @@ namespace boost { namespace network { namespace http { namespace impl {
32
34
bool follow_redirect
33
35
) : resolver_(resolver),
34
36
resolve_ (resolve),
35
- follow_redirect_(follow_redirect)
37
+ follow_redirect_(follow_redirect),
38
+ request_strand_(new boost::asio::io_service::strand(resolver->get_io_service ()))
36
39
{}
37
40
38
41
virtual response start (request const & request, string_type const & method, bool get_body) {
@@ -49,7 +52,7 @@ namespace boost { namespace network { namespace http { namespace impl {
49
52
50
53
// start things off by resolving the host.
51
54
resolve_ (resolver_, host (request),
52
- request_strand ->wrap (
55
+ request_strand_ ->wrap (
53
56
boost::bind (
54
57
&http_async_connection<Tag,version_major,version_minor>::handle_resolved,
55
58
http_async_connection<Tag,version_major,version_minor>::shared_from_this (),
@@ -95,7 +98,10 @@ namespace boost { namespace network { namespace http { namespace impl {
95
98
}
96
99
}
97
100
98
- resolve_function resolve;
101
+ boost::shared_ptr<resolver_type> resolver_;
102
+ resolve_function resolve_;
103
+ bool follow_redirect_;
104
+ boost::shared_ptr<boost::asio::io_service::strand> request_strand_;
99
105
boost::promise<string_type> version_promise;
100
106
boost::promise<boost::uint16_t > status_promise;
101
107
boost::promise<string_type> status_message_promise;
0 commit comments