From 38e28966ea4401ba851c3b9826ac2cf859489602 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Tue, 12 Sep 2017 13:49:45 -0700 Subject: [PATCH] message::version is a member function (API Change): fix #778 * The version data member is replaced with accessor member functions. Actions Required: * Call member function message::version instead of accessing the version member at call sites. --- CHANGELOG.md | 4 + doc/images/message.png | Bin 37322 -> 44322 bytes .../server-flex/advanced_server_flex.cpp | 10 +- example/advanced/server/advanced_server.cpp | 10 +- example/doc/http_examples.hpp | 8 +- .../async-ssl/http_client_async_ssl.cpp | 2 +- .../http/client/async/http_client_async.cpp | 2 +- example/http/client/crawl/http_crawl.cpp | 2 +- .../async-ssl/http_server_async_ssl.cpp | 10 +- .../http/server/async/http_server_async.cpp | 10 +- .../server/coro-ssl/http_server_coro_ssl.cpp | 10 +- example/http/server/coro/http_server_coro.cpp | 10 +- example/http/server/flex/http_server_flex.cpp | 10 +- .../http/server/small/http_server_small.cpp | 2 +- .../http_server_stackless_ssl.cpp | 10 +- .../stackless/http_server_stackless.cpp | 10 +- .../server/sync-ssl/http_server_sync_ssl.cpp | 10 +- example/http/server/sync/http_server_sync.cpp | 10 +- include/boost/beast/http/impl/message.ipp | 18 +-- include/boost/beast/http/impl/serializer.ipp | 4 +- include/boost/beast/http/message.hpp | 122 ++++++++++++------ include/boost/beast/http/parser.hpp | 4 +- .../boost/beast/websocket/impl/rfc6455.ipp | 2 +- include/boost/beast/websocket/impl/stream.ipp | 12 +- include/boost/beast/websocket/stream.hpp | 6 +- test/beast/http/fields.cpp | 22 ++-- test/beast/http/message.cpp | 26 ++-- test/beast/http/parser.cpp | 8 +- test/beast/http/write.cpp | 20 +-- test/beast/websocket/accept.cpp | 6 +- test/beast/websocket/rfc6455.cpp | 4 +- test/doc/http_examples.cpp | 6 +- test/doc/http_snippets.cpp | 6 +- 33 files changed, 218 insertions(+), 178 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32d5bfa8..ec8c9c49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,16 @@ Version 116: API Changes: * message::body is a member function +* message::version is a member function Actions Required: * Call member function message::body instead of accessing the data member at call sites. +* Call member function message::version instead of accessing + the version member at call sites. + -------------------------------------------------------------------------------- Version 115: diff --git a/doc/images/message.png b/doc/images/message.png index b1675df8caeafbf8b8d42a24288607c528a71466..393ef30d469a31a17a275866861ee5fc032bd7e2 100644 GIT binary patch delta 43850 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 RT?`Bi44$rjF6*2Ung9~0*lYj* delta 36795 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 diff --git a/example/advanced/server-flex/advanced_server_flex.cpp b/example/advanced/server-flex/advanced_server_flex.cpp index 86b4e0d6..372b1fb2 100644 --- a/example/advanced/server-flex/advanced_server_flex.cpp +++ b/example/advanced/server-flex/advanced_server_flex.cpp @@ -120,7 +120,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -133,7 +133,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -146,7 +146,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -187,7 +187,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -199,7 +199,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/advanced/server/advanced_server.cpp b/example/advanced/server/advanced_server.cpp index 186d1de2..caf17410 100644 --- a/example/advanced/server/advanced_server.cpp +++ b/example/advanced/server/advanced_server.cpp @@ -114,7 +114,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -127,7 +127,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -140,7 +140,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -181,7 +181,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -193,7 +193,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/doc/http_examples.hpp b/example/doc/http_examples.hpp index 3c33f373..e1437830 100644 --- a/example/doc/http_examples.hpp +++ b/example/doc/http_examples.hpp @@ -139,7 +139,7 @@ receive_expect_100_continue( { // send 100 response response res; - res.version = 11; + res.version(11); res.result(status::continue_); res.set(field::server, "test"); write(stream, res, ec); @@ -202,7 +202,7 @@ send_cgi_response( response res; res.result(status::ok); - res.version = 11; + res.version(11); res.set(field::server, "Beast"); res.set(field::transfer_encoding, "chunked"); @@ -307,7 +307,7 @@ void do_server_head( // Set up the response, starting with the common fields response res; - res.version = 11; + res.version(11); res.set(field::server, "test"); // Now handle request-specific fields @@ -396,7 +396,7 @@ do_head_request( // Build the HEAD request for the target request req; - req.version = 11; + req.version(11); req.method(verb::head); req.target(target); req.set(field::user_agent, "test"); diff --git a/example/http/client/async-ssl/http_client_async_ssl.cpp b/example/http/client/async-ssl/http_client_async_ssl.cpp index 11026ab6..9b0cad1d 100644 --- a/example/http/client/async-ssl/http_client_async_ssl.cpp +++ b/example/http/client/async-ssl/http_client_async_ssl.cpp @@ -66,7 +66,7 @@ public: char const* target) { // Set up an HTTP GET request message - req_.version = 11; + req_.version(11); req_.method(http::verb::get); req_.target(target); req_.set(http::field::host, host); diff --git a/example/http/client/async/http_client_async.cpp b/example/http/client/async/http_client_async.cpp index 6fab9c81..6c3f9af5 100644 --- a/example/http/client/async/http_client_async.cpp +++ b/example/http/client/async/http_client_async.cpp @@ -62,7 +62,7 @@ public: char const* target) { // Set up an HTTP GET request message - req_.version = 11; + req_.version(11); req_.method(http::verb::get); req_.target(target); req_.set(http::field::host, host); diff --git a/example/http/client/crawl/http_crawl.cpp b/example/http/client/crawl/http_crawl.cpp index 6e492c7a..ed6708ce 100644 --- a/example/http/client/crawl/http_crawl.cpp +++ b/example/http/client/crawl/http_crawl.cpp @@ -168,7 +168,7 @@ public: , strand_(ios) { // Set up the common fields of the request - req_.version = 11; + req_.version(11); req_.method(http::verb::get); req_.target("/"); req_.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING); diff --git a/example/http/server/async-ssl/http_server_async_ssl.cpp b/example/http/server/async-ssl/http_server_async_ssl.cpp index d0c4168d..c9d23a36 100644 --- a/example/http/server/async-ssl/http_server_async_ssl.cpp +++ b/example/http/server/async-ssl/http_server_async_ssl.cpp @@ -115,7 +115,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -128,7 +128,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -141,7 +141,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -182,7 +182,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -194,7 +194,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/http/server/async/http_server_async.cpp b/example/http/server/async/http_server_async.cpp index 297be65a..3f9d0c33 100644 --- a/example/http/server/async/http_server_async.cpp +++ b/example/http/server/async/http_server_async.cpp @@ -111,7 +111,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -124,7 +124,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -137,7 +137,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -178,7 +178,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -190,7 +190,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/http/server/coro-ssl/http_server_coro_ssl.cpp b/example/http/server/coro-ssl/http_server_coro_ssl.cpp index df7ab677..fd03be7b 100644 --- a/example/http/server/coro-ssl/http_server_coro_ssl.cpp +++ b/example/http/server/coro-ssl/http_server_coro_ssl.cpp @@ -114,7 +114,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -127,7 +127,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -140,7 +140,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -181,7 +181,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -193,7 +193,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/http/server/coro/http_server_coro.cpp b/example/http/server/coro/http_server_coro.cpp index 2e42cf86..cf4d4225 100644 --- a/example/http/server/coro/http_server_coro.cpp +++ b/example/http/server/coro/http_server_coro.cpp @@ -110,7 +110,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -123,7 +123,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -136,7 +136,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -177,7 +177,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -189,7 +189,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/http/server/flex/http_server_flex.cpp b/example/http/server/flex/http_server_flex.cpp index 2bb538de..0eb1c14c 100644 --- a/example/http/server/flex/http_server_flex.cpp +++ b/example/http/server/flex/http_server_flex.cpp @@ -115,7 +115,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -128,7 +128,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -141,7 +141,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -182,7 +182,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -194,7 +194,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/http/server/small/http_server_small.cpp b/example/http/server/small/http_server_small.cpp index 1f26484e..e0708cb6 100644 --- a/example/http/server/small/http_server_small.cpp +++ b/example/http/server/small/http_server_small.cpp @@ -100,7 +100,7 @@ private: void process_request() { - response_.version = 11; + response_.version(11); response_.set(http::field::connection, "close"); switch(request_.method()) diff --git a/example/http/server/stackless-ssl/http_server_stackless_ssl.cpp b/example/http/server/stackless-ssl/http_server_stackless_ssl.cpp index 9d0352af..9f34b57e 100644 --- a/example/http/server/stackless-ssl/http_server_stackless_ssl.cpp +++ b/example/http/server/stackless-ssl/http_server_stackless_ssl.cpp @@ -116,7 +116,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -129,7 +129,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -142,7 +142,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -183,7 +183,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -195,7 +195,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/http/server/stackless/http_server_stackless.cpp b/example/http/server/stackless/http_server_stackless.cpp index 50af6c35..2535632e 100644 --- a/example/http/server/stackless/http_server_stackless.cpp +++ b/example/http/server/stackless/http_server_stackless.cpp @@ -112,7 +112,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -125,7 +125,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -138,7 +138,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -179,7 +179,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -191,7 +191,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/http/server/sync-ssl/http_server_sync_ssl.cpp b/example/http/server/sync-ssl/http_server_sync_ssl.cpp index 87901c92..8aa36052 100644 --- a/example/http/server/sync-ssl/http_server_sync_ssl.cpp +++ b/example/http/server/sync-ssl/http_server_sync_ssl.cpp @@ -111,7 +111,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -124,7 +124,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -137,7 +137,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -178,7 +178,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -190,7 +190,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/example/http/server/sync/http_server_sync.cpp b/example/http/server/sync/http_server_sync.cpp index 1aaf3162..a8e18eb5 100644 --- a/example/http/server/sync/http_server_sync.cpp +++ b/example/http/server/sync/http_server_sync.cpp @@ -109,7 +109,7 @@ handle_request( auto const bad_request = [&req](boost::beast::string_view why) { - http::response res{http::status::bad_request, req.version}; + http::response res{http::status::bad_request, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -122,7 +122,7 @@ handle_request( auto const not_found = [&req](boost::beast::string_view target) { - http::response res{http::status::not_found, req.version}; + http::response res{http::status::not_found, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -135,7 +135,7 @@ handle_request( auto const server_error = [&req](boost::beast::string_view what) { - http::response res{http::status::internal_server_error, req.version}; + http::response res{http::status::internal_server_error, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, "text/html"); res.keep_alive(req.keep_alive()); @@ -176,7 +176,7 @@ handle_request( // Respond to HEAD request if(req.method() == http::verb::head) { - http::response res{http::status::ok, req.version}; + http::response res{http::status::ok, req.version()}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); @@ -188,7 +188,7 @@ handle_request( http::response res{ std::piecewise_construct, std::make_tuple(std::move(body)), - std::make_tuple(http::status::ok, req.version)}; + std::make_tuple(http::status::ok, req.version())}; res.set(http::field::server, BOOST_BEAST_VERSION_STRING); res.set(http::field::content_type, mime_type(path)); res.content_length(body.size()); diff --git a/include/boost/beast/http/impl/message.ipp b/include/boost/beast/http/impl/message.ipp index fc19ec27..a984bf73 100644 --- a/include/boost/beast/http/impl/message.ipp +++ b/include/boost/beast/http/impl/message.ipp @@ -100,7 +100,7 @@ swap( swap( static_cast(h1), static_cast(h2)); - swap(h1.version, h2.version); + swap(h1.version_, h2.version_); swap(h1.method_, h2.method_); } @@ -115,18 +115,6 @@ header(Arg1&& arg1, ArgN&&... argn) { } -#if 0 -template -template -header:: -header(status result, unsigned version_, Args&&... args) - : Fields(std::forward(args)...) - , version(version_) - , result_(result) -{ -} -#endif - template inline status @@ -198,7 +186,7 @@ swap( swap( static_cast(h1), static_cast(h2)); - swap(h1.version, h2.version); + swap(h1.version_, h2.version_); swap(h1.result_, h2.result_); } @@ -378,7 +366,7 @@ prepare_payload(std::true_type) this->chunked(false); } } - else if(this->version >= 11) + else if(this->version() >= 11) { this->chunked(true); } diff --git a/include/boost/beast/http/impl/serializer.ipp b/include/boost/beast/http/impl/serializer.ipp index bfe86f73..befd62ca 100644 --- a/include/boost/beast/http/impl/serializer.ipp +++ b/include/boost/beast/http/impl/serializer.ipp @@ -27,7 +27,7 @@ void serializer:: frdinit(std::true_type) { - frd_.emplace(m_, m_.version, m_.method()); + frd_.emplace(m_, m_.version(), m_.method()); } template< @@ -36,7 +36,7 @@ void serializer:: frdinit(std::false_type) { - frd_.emplace(m_, m_.version, m_.result_int()); + frd_.emplace(m_, m_.version(), m_.result_int()); } template< diff --git a/include/boost/beast/http/message.hpp b/include/boost/beast/http/message.hpp index a2868318..2d6e53ec 100644 --- a/include/boost/beast/http/message.hpp +++ b/include/boost/beast/http/message.hpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -69,7 +70,22 @@ struct header : Fields /// The type representing the fields. using fields_type = Fields; - /** The HTTP-version. + /// COnstructor + header() = default; + + /// Constructor + header(header&&) = default; + + /// Constructor + header(header const&) = default; + + /// Assignment + header& operator=(header&&) = default; + + /// Assignment + header& operator=(header const&) = default; + + /** Return the HTTP-version. This holds both the major and minor version numbers, using these formulas: @@ -80,22 +96,29 @@ struct header : Fields Newly constructed headers will use HTTP/1.1 by default. */ - unsigned version = 11; + unsigned version() const noexcept + { + return version_; + } - /// Default constructor - header() = default; + /** Set the HTTP-version. - /// Move constructor - header(header&&) = default; + This holds both the major and minor version numbers, + using these formulas: + @code + unsigned major = version / 10; + unsigned minor = version % 10; + @endcode - /// Copy constructor - header(header const&) = default; + Newly constructed headers will use HTTP/1.1 by default. - /// Move assignment - header& operator=(header&&) = default; - - /// Copy assignment - header& operator=(header const&) = default; + @param value The version number to use + */ + void version(unsigned value) noexcept + { + BOOST_ASSERT(value > 0 && value < 100); + version_ = value; + } /** Return the request-method verb. @@ -206,15 +229,16 @@ private: header( verb method, string_view target_, - unsigned version_, + unsigned version_value, FieldsArgs&&... fields_args) : Fields(std::forward(fields_args)...) - , version(version_) , method_(method) { + version(version_value); target(target_); } + unsigned version_ = 11; verb method_ = verb::unknown; }; @@ -234,33 +258,19 @@ struct header : Fields /// The type representing the fields. using fields_type = Fields; - /** The HTTP version. - - This holds both the major and minor version numbers, - using these formulas: - @code - unsigned major = version / 10; - unsigned minor = version % 10; - @endcode - - Newly constructed headers will use HTTP/1.1 by default - unless otherwise specified. - */ - unsigned version = 11; - - /// Default constructor. + /// Constructor. header() = default; - /// Move constructor + /// Constructor header(header&&) = default; - /// Copy constructor + /// Constructor header(header const&) = default; - /// Move assignment + /// Assignment header& operator=(header&&) = default; - /// Copy assignment + /// Assignment header& operator=(header const&) = default; /** Constructor @@ -282,6 +292,41 @@ struct header : Fields >::type> explicit header(Arg1&& arg1, ArgN&&... argn); + + /** Return the HTTP-version. + + This holds both the major and minor version numbers, + using these formulas: + @code + unsigned major = version / 10; + unsigned minor = version % 10; + @endcode + + Newly constructed headers will use HTTP/1.1 by default. + */ + unsigned version() const noexcept + { + return version_; + } + + /** Set the HTTP-version. + + This holds both the major and minor version numbers, + using these formulas: + @code + unsigned major = version / 10; + unsigned minor = version % 10; + @endcode + + Newly constructed headers will use HTTP/1.1 by default. + + @param value The version number to use + */ + void version(unsigned value) noexcept + { + BOOST_ASSERT(value > 0 && value < 100); + version_ = value; + } #endif /** The response status-code result. @@ -372,14 +417,15 @@ private: template header( status result, - unsigned version_, + unsigned version_value, FieldsArgs&&... fields_args) : Fields(std::forward(fields_args)...) - , version(version_) , result_(result) { + version(version_value); } + unsigned version_ = 11; status result_ = status::ok; #endif }; @@ -703,7 +749,7 @@ struct message bool keep_alive() const { - return this->get_keep_alive_impl(this->version); + return this->get_keep_alive_impl(this->version()); } /** Set the keep-alive message semantic option @@ -719,7 +765,7 @@ struct message void keep_alive(bool value) { - this->set_keep_alive_impl(this->version, value); + this->set_keep_alive_impl(this->version(), value); } /** Returns the payload size of the body in octets if possible. diff --git a/include/boost/beast/http/parser.hpp b/include/boost/beast/http/parser.hpp index f03d1fe8..c6ff1b9a 100644 --- a/include/boost/beast/http/parser.hpp +++ b/include/boost/beast/http/parser.hpp @@ -324,7 +324,7 @@ private: { ec = error::bad_alloc; } - m_.version = version; + m_.version(version); } void @@ -335,7 +335,7 @@ private: error_code& ec) { m_.result(code); - m_.version = version; + m_.version(version); try { m_.reason(reason); diff --git a/include/boost/beast/websocket/impl/rfc6455.ipp b/include/boost/beast/websocket/impl/rfc6455.ipp index 59677248..d688b63d 100644 --- a/include/boost/beast/websocket/impl/rfc6455.ipp +++ b/include/boost/beast/websocket/impl/rfc6455.ipp @@ -22,7 +22,7 @@ bool is_upgrade(http::header> const& req) { - if(req.version < 11) + if(req.version() < 11) return false; if(req.method() != http::verb::get) return false; diff --git a/include/boost/beast/websocket/impl/stream.ipp b/include/boost/beast/websocket/impl/stream.ipp index d02d7710..87260572 100644 --- a/include/boost/beast/websocket/impl/stream.ipp +++ b/include/boost/beast/websocket/impl/stream.ipp @@ -523,7 +523,7 @@ build_request(detail::sec_ws_key_type& key, { request_type req; req.target(target); - req.version = 11; + req.version(11); req.method(http::verb::get); req.set(http::field::host, host); req.set(http::field::upgrade, "websocket"); @@ -575,14 +575,14 @@ build_response(http::request diff --git a/test/beast/http/fields.cpp b/test/beast/http/fields.cpp index c54871c2..6abdcd8b 100644 --- a/test/beast/http/fields.cpp +++ b/test/beast/http/fields.cpp @@ -445,7 +445,7 @@ public: // GET, empty { request req; - req.version = 11; + req.version(11); req.method(verb::get); req.prepare_payload(); @@ -473,7 +473,7 @@ public: // GET, sized { request req; - req.version = 11; + req.version(11); req.method(verb::get); req.body() = 50; @@ -496,7 +496,7 @@ public: // PUT, empty { request req; - req.version = 11; + req.version(11); req.method(verb::put); req.prepare_payload(); @@ -513,7 +513,7 @@ public: // PUT, sized { request req; - req.version = 11; + req.version(11); req.method(verb::put); req.body() = 50; @@ -531,7 +531,7 @@ public: // POST, unsized { request req; - req.version = 11; + req.version(11); req.method(verb::post); req.prepare_payload(); @@ -547,7 +547,7 @@ public: // POST, unsized HTTP/1.0 { request req; - req.version = 10; + req.version(10); req.method(verb::post); req.prepare_payload(); @@ -563,7 +563,7 @@ public: // OK, empty { response res; - res.version = 11; + res.version(11); res.prepare_payload(); BEAST_EXPECT(res[field::content_length] == "0"); @@ -579,7 +579,7 @@ public: // OK, sized { response res; - res.version = 11; + res.version(11); res.body() = 50; res.prepare_payload(); @@ -596,7 +596,7 @@ public: // OK, unsized { response res; - res.version = 11; + res.version(11); res.prepare_payload(); BEAST_EXPECT(res.count(field::content_length) == 0); @@ -621,7 +621,7 @@ public: std::string const big(4096 + 1, 'a'); // HTTP/1.0 - res.version = 10; + res.version(10); res.erase(field::connection); keep_alive(false); @@ -695,7 +695,7 @@ public: test10(big); // HTTP/1.1 - res.version = 11; + res.version(11); res.erase(field::connection); keep_alive(true); diff --git a/test/beast/http/message.cpp b/test/beast/http/message.cpp index b229552e..b7b83177 100644 --- a/test/beast/http/message.cpp +++ b/test/beast/http/message.cpp @@ -149,7 +149,7 @@ public: BEAST_EXPECT(h.count(http::field::user_agent) == 0); BEAST_EXPECT(m.method() == verb::get); BEAST_EXPECT(m.target() == "/"); - BEAST_EXPECT(m.version == 10); + BEAST_EXPECT(m.version() == 10); } // swap @@ -216,19 +216,19 @@ public: { { request req; - BEAST_EXPECT(req.version == 11); + BEAST_EXPECT(req.version() == 11); BEAST_EXPECT(req.method() == verb::unknown); BEAST_EXPECT(req.target() == ""); } { request req{verb::get, "/", 11}; - BEAST_EXPECT(req.version == 11); + BEAST_EXPECT(req.version() == 11); BEAST_EXPECT(req.method() == verb::get); BEAST_EXPECT(req.target() == "/"); } { request req{verb::get, "/", 11, "Hello"}; - BEAST_EXPECT(req.version == 11); + BEAST_EXPECT(req.version() == 11); BEAST_EXPECT(req.method() == verb::get); BEAST_EXPECT(req.target() == "/"); BEAST_EXPECT(req.body() == "Hello"); @@ -236,26 +236,26 @@ public: { request req{ verb::get, "/", 11, "Hello", token{}}; - BEAST_EXPECT(req.version == 11); + BEAST_EXPECT(req.version() == 11); BEAST_EXPECT(req.method() == verb::get); BEAST_EXPECT(req.target() == "/"); BEAST_EXPECT(req.body() == "Hello"); } { response res; - BEAST_EXPECT(res.version == 11); + BEAST_EXPECT(res.version() == 11); BEAST_EXPECT(res.result() == status::ok); BEAST_EXPECT(res.reason() == "OK"); } { response res{status::bad_request, 10}; - BEAST_EXPECT(res.version == 10); + BEAST_EXPECT(res.version() == 10); BEAST_EXPECT(res.result() == status::bad_request); BEAST_EXPECT(res.reason() == "Bad Request"); } { response res{status::bad_request, 10, "Hello"}; - BEAST_EXPECT(res.version == 10); + BEAST_EXPECT(res.version() == 10); BEAST_EXPECT(res.result() == status::bad_request); BEAST_EXPECT(res.reason() == "Bad Request"); BEAST_EXPECT(res.body() == "Hello"); @@ -263,7 +263,7 @@ public: { response res{ status::bad_request, 10, "Hello", token{}}; - BEAST_EXPECT(res.version == 10); + BEAST_EXPECT(res.version() == 10); BEAST_EXPECT(res.result() == status::bad_request); BEAST_EXPECT(res.reason() == "Bad Request"); BEAST_EXPECT(res.body() == "Hello"); @@ -276,12 +276,12 @@ public: response m1; response m2; m1.result(status::ok); - m1.version = 10; + m1.version(10); m1.body() = "1"; m1.insert("h", "v"); m2.result(status::not_found); m2.body() = "2"; - m2.version = 11; + m2.version(11); swap(m1, m2); BEAST_EXPECT(m1.result() == status::not_found); BEAST_EXPECT(m1.result_int() == 404); @@ -289,8 +289,8 @@ public: BEAST_EXPECT(m2.result_int() == 200); BEAST_EXPECT(m1.reason() == "Not Found"); BEAST_EXPECT(m2.reason() == "OK"); - BEAST_EXPECT(m1.version == 11); - BEAST_EXPECT(m2.version == 10); + BEAST_EXPECT(m1.version() == 11); + BEAST_EXPECT(m2.version() == 10); BEAST_EXPECT(m1.body() == "2"); BEAST_EXPECT(m2.body() == "1"); BEAST_EXPECT(! m1.count("h")); diff --git a/test/beast/http/parser.cpp b/test/beast/http/parser.cpp index f618bcc1..10a114bc 100644 --- a/test/beast/http/parser.cpp +++ b/test/beast/http/parser.cpp @@ -131,7 +131,7 @@ public: BEAST_EXPECT(! p.is_chunked()); BEAST_EXPECT(p.need_eof()); BEAST_EXPECT(p.content_length() == boost::none); - BEAST_EXPECT(m.version == 10); + BEAST_EXPECT(m.version() == 10); BEAST_EXPECT(m.result() == status::ok); BEAST_EXPECT(m.reason() == "OK"); BEAST_EXPECT(m["Server"] == "test"); @@ -158,7 +158,7 @@ public: BEAST_EXPECT(! p.need_eof()); BEAST_EXPECT(p.is_chunked()); BEAST_EXPECT(p.content_length() == boost::none); - BEAST_EXPECT(m.version == 11); + BEAST_EXPECT(m.version() == 11); BEAST_EXPECT(m.result() == status::ok); BEAST_EXPECT(m.reason() == "OK"); BEAST_EXPECT(m["Server"] == "test"); @@ -189,7 +189,7 @@ public: auto const& m = p.get(); BEAST_EXPECT(m.method() == verb::get); BEAST_EXPECT(m.target() == "/"); - BEAST_EXPECT(m.version == 11); + BEAST_EXPECT(m.version() == 11); BEAST_EXPECT(! p.need_eof()); BEAST_EXPECT(! p.is_chunked()); BEAST_EXPECT(p.content_length() == boost::none); @@ -226,7 +226,7 @@ public: BEAST_EXPECT(! p.need_eof()); BEAST_EXPECT(m.method() == verb::get); BEAST_EXPECT(m.target() == "/"); - BEAST_EXPECT(m.version == 11); + BEAST_EXPECT(m.version() == 11); BEAST_EXPECT(m["User-Agent"] == "test"); BEAST_EXPECT(m.body() == "*"); } diff --git a/test/beast/http/write.cpp b/test/beast/http/write.cpp index d4a8fbeb..78fa0f0b 100644 --- a/test/beast/http/write.cpp +++ b/test/beast/http/write.cpp @@ -319,7 +319,7 @@ public: { { response m; - m.version = 10; + m.version(10); m.result(status::ok); m.set(field::server, "test"); m.set(field::content_length, "5"); @@ -338,7 +338,7 @@ public: } { response m; - m.version = 11; + m.version(11); m.result(status::ok); m.set(field::server, "test"); m.set(field::transfer_encoding, "chunked"); @@ -518,7 +518,7 @@ public: request m; m.method(verb::get); m.target("/"); - m.version = 10; + m.version(10); m.set(field::user_agent, "test"); m.body() = "*"; m.prepare_payload(); @@ -535,7 +535,7 @@ public: request m; m.method(verb::get); m.target("/"); - m.version = 10; + m.version(10); m.set(field::user_agent, "test"); m.body() = "*"; m.prepare_payload(); @@ -556,7 +556,7 @@ public: request m; m.method(verb::get); m.target("/"); - m.version = 11; + m.version(11); m.set(field::user_agent, "test"); m.body() = "*"; m.prepare_payload(); @@ -573,7 +573,7 @@ public: request m; m.method(verb::get); m.target("/"); - m.version = 11; + m.version(11); m.set(field::user_agent, "test"); m.body() = "*"; m.prepare_payload(); @@ -599,7 +599,7 @@ public: request m; m.method(verb::get); m.target("/"); - m.version = 11; + m.version(11); m.set(field::user_agent, "test"); m.body() = "*"; BEAST_EXPECT(to_string(m) == @@ -628,7 +628,7 @@ public: BEAST_EXPECT(handler::count() == 0); request m; m.method(verb::get); - m.version = 11; + m.version(11); m.target("/"); m.set("Content-Length", 5); m.body() = "*****"; @@ -651,7 +651,7 @@ public: BEAST_EXPECT(handler::count() == 0); request m; m.method(verb::get); - m.version = 11; + m.version(11); m.target("/"); m.set("Content-Length", 5); m.body() = "*****"; @@ -712,7 +712,7 @@ public: ts.write_size(3); response m0; - m0.version = 11; + m0.version(11); m0.result(status::ok); m0.reason("OK"); m0.set(field::server, "test"); diff --git a/test/beast/websocket/accept.cpp b/test/beast/websocket/accept.cpp index ebf4f2bb..92fd3f3e 100644 --- a/test/beast/websocket/accept.cpp +++ b/test/beast/websocket/accept.cpp @@ -327,7 +327,7 @@ public: request_type req; req.method(http::verb::get); req.target("/"); - req.version = 11; + req.version(11); req.insert(http::field::host, "localhost"); req.insert(http::field::upgrade, "websocket"); req.insert(http::field::connection, "upgrade"); @@ -344,7 +344,7 @@ public: request_type req; req.method(http::verb::get); req.target("/"); - req.version = 11; + req.version(11); req.insert(http::field::host, "localhost"); req.insert(http::field::upgrade, "websocket"); req.insert(http::field::connection, "upgrade"); @@ -364,7 +364,7 @@ public: request_type req; req.method(http::verb::get); req.target("/"); - req.version = 11; + req.version(11); req.insert(http::field::host, "localhost"); req.insert(http::field::upgrade, "websocket"); req.insert(http::field::connection, "upgrade"); diff --git a/test/beast/websocket/rfc6455.cpp b/test/beast/websocket/rfc6455.cpp index 4d7546ae..76f8da57 100644 --- a/test/beast/websocket/rfc6455.cpp +++ b/test/beast/websocket/rfc6455.cpp @@ -24,9 +24,9 @@ public: test_is_upgrade() { http::header req; - req.version = 10; + req.version(10); BEAST_EXPECT(! is_upgrade(req)); - req.version = 11; + req.version(11); req.method(http::verb::post); req.target("/"); BEAST_EXPECT(! is_upgrade(req)); diff --git a/test/doc/http_examples.cpp b/test/doc/http_examples.cpp index 7b82e493..afee4b08 100644 --- a/test/doc/http_examples.cpp +++ b/test/doc/http_examples.cpp @@ -105,7 +105,7 @@ public: { flat_buffer buffer; request req; - req.version = 11; + req.version(11); req.method_string("POST"); req.target("/"); req.insert(field::user_agent, "test"); @@ -138,7 +138,7 @@ public: doRelay() { request req; - req.version = 11; + req.version(11); req.method_string("POST"); req.target("/"); req.insert(field::user_agent, "test"); @@ -192,7 +192,7 @@ public: { std::ostringstream os; request req; - req.version = 11; + req.version(11); req.method(verb::get); req.target("/"); req.insert(field::user_agent, "test"); diff --git a/test/doc/http_snippets.cpp b/test/doc/http_snippets.cpp index 781765fc..d2ec807f 100644 --- a/test/doc/http_snippets.cpp +++ b/test/doc/http_snippets.cpp @@ -45,7 +45,7 @@ void fxx() { //[http_snippet_2 request req; - req.version = 11; // HTTP/1.1 + req.version(11); // HTTP/1.1 req.method(verb::get); req.target("/index.htm"); req.set(field::accept, "text/html"); @@ -58,7 +58,7 @@ void fxx() { //[http_snippet_3 response res; - res.version = 11; // HTTP/1.1 + res.version(11); // HTTP/1.1 res.result(status::ok); res.set(field::server, "Beast"); res.body() = "Hello, world!"; @@ -112,7 +112,7 @@ void fxx() { //[http_snippet_7 response res; - res.version = 11; + res.version(11); res.result(status::ok); res.set(field::server, "Beast"); res.body() = "Hello, world!";