@@ -291,7 +291,7 @@ namespace boost { namespace network { namespace http {
291
291
Handler & handler;
292
292
utils::thread_pool & thread_pool_;
293
293
volatile bool headers_already_sent, first_line_already_sent, headers_in_progress, first_line_in_progress;
294
- asio::streambuf headers_buffer;
294
+ asio::streambuf headers_buffer, first_line_buffer ;
295
295
296
296
boost::recursive_mutex headers_mutex;
297
297
buffer_type read_buffer_;
@@ -402,6 +402,7 @@ namespace boost { namespace network { namespace http {
402
402
request_.http_version_major = fusion::get<0 >(version_pair);
403
403
request_.http_version_minor = fusion::get<1 >(version_pair);
404
404
new_start = boost::end (result_range);
405
+ partial_parsed.clear ();
405
406
} else {
406
407
partial_parsed.append (
407
408
boost::begin (result_range),
@@ -423,7 +424,6 @@ namespace boost { namespace network { namespace http {
423
424
partial_parsed.append (
424
425
boost::begin (result_range),
425
426
boost::end (result_range));
426
- trim (partial_parsed);
427
427
parse_headers (partial_parsed, request_.headers );
428
428
new_start = boost::end (result_range);
429
429
thread_pool ().post (
@@ -503,19 +503,18 @@ namespace boost { namespace network { namespace http {
503
503
if (first_line_in_progress) return ;
504
504
first_line_in_progress = true ;
505
505
506
- std::vector<asio::const_buffer> buffers;
507
506
typedef constants<Tag> consts;
508
- typename ostringstream<Tag>::type first_line_stream;
509
- first_line_stream
507
+ first_line_buffer.consume (first_line_buffer.size ());
508
+ std::ostream first_line_stream (&first_line_buffer);
509
+ first_line_stream
510
510
<< consts::http_slash () << 1 << consts::dot () << 1 << consts::space ()
511
511
<< status << consts::space () << status_message (status)
512
512
<< consts::crlf ()
513
+ << std::flush
513
514
;
514
- std::string first_line = first_line_stream.str ();
515
- buffers.push_back (asio::buffer (first_line));
516
515
asio::async_write (
517
516
socket ()
518
- , buffers
517
+ , first_line_buffer
519
518
, callback);
520
519
}
521
520
0 commit comments