@@ -229,14 +229,12 @@ namespace boost { namespace network { namespace http {
229
229
{
230
230
input_range input = boost::make_iterator_range (new_start, read_buffer_.end ());
231
231
thread_pool ().post (
232
- strand.wrap (
233
- boost::bind (
234
- callback
235
- , input
236
- , boost::system::error_code ()
237
- , data_end - new_start
238
- , async_connection<Tag,Handler>::shared_from_this ())
239
- )
232
+ boost::bind (
233
+ callback
234
+ , input
235
+ , boost::system::error_code ()
236
+ , std::distance (new_start, data_end)
237
+ , async_connection<Tag,Handler>::shared_from_this ())
240
238
);
241
239
new_start = read_buffer_.begin ();
242
240
return ;
@@ -262,11 +260,13 @@ namespace boost { namespace network { namespace http {
262
260
263
261
void wrap_read_handler (read_callback_function callback, boost::system::error_code const & ec, std::size_t bytes_transferred) {
264
262
if (ec) error_encountered = in_place<boost::system ::system_error>(ec);
263
+ buffer_type::const_iterator data_start = read_buffer_.begin ()
264
+ ,data_end = read_buffer_.begin ();
265
+ std::advance (data_end, bytes_transferred);
265
266
thread_pool ().post (
266
267
boost::bind (
267
268
callback
268
- , boost::make_iterator_range (read_buffer_.begin ()
269
- ,read_buffer_.begin () + bytes_transferred)
269
+ , boost::make_iterator_range (data_start, data_end)
270
270
, ec
271
271
, bytes_transferred
272
272
, async_connection<Tag,Handler>::shared_from_this ()));
@@ -334,7 +334,8 @@ namespace boost { namespace network { namespace http {
334
334
if (!ec) {
335
335
logic::tribool parsed_ok;
336
336
iterator_range<buffer_type::iterator> result_range, input_range;
337
- data_end = new_start + bytes_transferred;
337
+ data_end = read_buffer_.begin ();
338
+ std::advance (data_end, bytes_transferred);
338
339
switch (state) {
339
340
case method:
340
341
input_range = boost::make_iterator_range (
0 commit comments