From eb4b7c70a92a4cdb1d6b877649fa8c2562182cb5 Mon Sep 17 00:00:00 2001 From: yhirose Date: Sat, 7 Nov 2020 09:33:22 -0500 Subject: [PATCH] Fix #737 --- httplib.h | 11 +++++++---- test/test.cc | 11 +++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/httplib.h b/httplib.h index 390025e..9f03449 100644 --- a/httplib.h +++ b/httplib.h @@ -430,7 +430,7 @@ struct Response { void set_redirect(const char *url, int status = 302); void set_redirect(const std::string &url, int status = 302); void set_content(const char *s, size_t n, const char *content_type); - void set_content(std::string s, const char *content_type); + void set_content(const std::string &s, const char *content_type); void set_content_provider( size_t length, const char *content_type, ContentProvider provider, @@ -3643,12 +3643,15 @@ inline void Response::set_redirect(const std::string &url, int stat) { inline void Response::set_content(const char *s, size_t n, const char *content_type) { body.assign(s, n); + + auto rng = headers.equal_range("Content-Type"); + headers.erase(rng.first, rng.second); set_header("Content-Type", content_type); } -inline void Response::set_content(std::string s, const char *content_type) { - body = std::move(s); - set_header("Content-Type", content_type); +inline void Response::set_content(const std::string &s, + const char *content_type) { + set_content(s.data(), s.size(), content_type); } inline void diff --git a/test/test.cc b/test/test.cc index c1a52c2..0c36833 100644 --- a/test/test.cc +++ b/test/test.cc @@ -135,6 +135,17 @@ TEST(GetHeaderValueTest, RegularValue) { EXPECT_STREQ("text/html", val); } +TEST(GetHeaderValueTest, SetContent) { + Response res; + + res.set_content("html", "text/html"); + EXPECT_EQ("text/html", res.get_header_value("Content-Type")); + + res.set_content("text", "text/plain"); + EXPECT_EQ(1, res.get_header_value_count("Content-Type")); + EXPECT_EQ("text/plain", res.get_header_value("Content-Type")); +} + TEST(GetHeaderValueTest, RegularValueInt) { Headers headers = {{"Content-Length", "100"}, {"Dummy", "Dummy"}}; auto val =