From 5a7b8b23db53575b921fef41a4f3482caf9c6258 Mon Sep 17 00:00:00 2001
From: Peter Jankuliak
Date: Thu, 21 Sep 2017 17:28:04 +0200
Subject: [PATCH] Fix writing headers into std::ostream
---
CHANGELOG.md | 8 ++++++
include/boost/beast/http/impl/write.ipp | 4 +--
test/beast/http/write.cpp | 38 +++++++++++++++++++------
3 files changed, 40 insertions(+), 10 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 77926efa..8c7a1c8e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+Version 118:
+
+HTTP:
+
+* Fix writing header into std::ostream
+
+--------------------------------------------------------------------------------
+
Version 117:
* Add buffers_to_string
diff --git a/include/boost/beast/http/impl/write.ipp b/include/boost/beast/http/impl/write.ipp
index 5ce7ee90..1d9e8448 100644
--- a/include/boost/beast/http/impl/write.ipp
+++ b/include/boost/beast/http/impl/write.ipp
@@ -878,7 +878,7 @@ operator<<(std::ostream& os,
header const& h)
{
typename Fields::reader fr{
- h, h.version, h.method()};
+ h, h.version(), h.method()};
return os << buffers(fr.get());
}
@@ -888,7 +888,7 @@ operator<<(std::ostream& os,
header const& h)
{
typename Fields::reader fr{
- h, h.version, h.result_int()};
+ h, h.version(), h.result_int()};
return os << buffers(fr.get());
}
diff --git a/test/beast/http/write.cpp b/test/beast/http/write.cpp
index 78fa0f0b..35437df2 100644
--- a/test/beast/http/write.cpp
+++ b/test/beast/http/write.cpp
@@ -596,14 +596,36 @@ public:
void test_std_ostream()
{
// Conversion to std::string via operator<<
- request m;
- m.method(verb::get);
- m.target("/");
- m.version(11);
- m.set(field::user_agent, "test");
- m.body() = "*";
- BEAST_EXPECT(to_string(m) ==
- "GET / HTTP/1.1\r\nUser-Agent: test\r\n\r\n*");
+ {
+ request m;
+ m.method(verb::get);
+ m.target("/");
+ m.version(11);
+ m.set(field::user_agent, "test");
+ m.body() = "*";
+ BEAST_EXPECT(to_string(m) ==
+ "GET / HTTP/1.1\r\nUser-Agent: test\r\n\r\n*");
+ }
+
+ // Output to std::ostream
+ {
+ request m{verb::get, "/", 11};
+ std::stringstream ss;
+ ss << m;
+ BEAST_EXPECT(ss.str() ==
+ "GET / HTTP/1.1\r\n"
+ "\r\n");
+ }
+
+ // Output header to std::ostream
+ {
+ request m{verb::get, "/", 11};
+ std::stringstream ss;
+ ss << m.base();
+ BEAST_EXPECT(ss.str() ==
+ "GET / HTTP/1.1\r\n"
+ "\r\n");
+ }
}
// Ensure completion handlers are not leaked