From ea148313318111cd1dd433bec376bd29c7899d25 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 16:30:36 +1000 Subject: [PATCH 01/21] Use EXPECT_FALSE instead of EXPECT_EQ(false, X) This fixes the failures we're finding from the CI builds. --- .../test/http/request_incremental_parser_test.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libs/network/test/http/request_incremental_parser_test.cpp b/libs/network/test/http/request_incremental_parser_test.cpp index 9120294f5..f8c8f5577 100644 --- a/libs/network/test/http/request_incremental_parser_test.cpp +++ b/libs/network/test/http/request_incremental_parser_test.cpp @@ -52,7 +52,7 @@ TEST(IncrementalRequestParserTest, ParseMethod) { p.reset(); std::tie(parsed_ok, result_range) = p.parse_until(request_parser_type::method_done, invalid_http_method); - EXPECT_EQ(false, parsed_ok); + EXPECT_FALSE(parsed_ok); parsed.assign(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " [state:" << p.state() << "] " << std::endl; @@ -68,7 +68,7 @@ TEST(IncrementalRequestParserTest, ParseURI) { std::string valid_http_request = "GET / HTTP/1.1\r\n"; std::tie(parsed_ok, result_range) = p.parse_until(request_parser_type::uri_done, valid_http_request); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_FALSE(boost::empty(result_range)); std::string parsed(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " [state:" << p.state() << "] " @@ -78,7 +78,7 @@ TEST(IncrementalRequestParserTest, ParseURI) { p.reset(); std::tie(parsed_ok, result_range) = p.parse_until(request_parser_type::uri_done, invalid_http_request); - EXPECT_EQ(false, parsed_ok); + EXPECT_FALSE(parsed_ok); parsed.assign(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " [state:" << p.state() << "] " << std::endl; @@ -104,7 +104,7 @@ TEST(IncrementalRequestParserTest, ParseHTTPVersion) { p.reset(); std::tie(parsed_ok, result_range) = p.parse_until(request_parser_type::version_done, invalid_http_request); - EXPECT_EQ(false, parsed_ok); + EXPECT_FALSE(parsed_ok); parsed.assign(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " [state:" << p.state() << "] " << std::endl; @@ -121,7 +121,7 @@ TEST(IncrementalRequestParserTest, ParseHTTPHeaders) { "GET / HTTP/1.1\r\nHost: cpp-netlib.org\r\n\r\n"; std::tie(parsed_ok, result_range) = p.parse_until(request_parser_type::headers_done, valid_http_request); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_FALSE(boost::empty(result_range)); std::string parsed(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " [state:" << p.state() << "] " From a3c79e0a73bbcbf04de85e1a05218db16b88fa3d Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 16:41:29 +1000 Subject: [PATCH 02/21] squash: fix response tests too --- libs/network/test/http/response_incremental_parser_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/network/test/http/response_incremental_parser_test.cpp b/libs/network/test/http/response_incremental_parser_test.cpp index 0642ce803..09a14d12d 100644 --- a/libs/network/test/http/response_incremental_parser_test.cpp +++ b/libs/network/test/http/response_incremental_parser_test.cpp @@ -100,7 +100,7 @@ TEST(IncrementalResponseParserTest, ParseHTTPVersion) { parsed_ok = logic::indeterminate; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_version_done, invalid_http_version); - EXPECT_EQ(false, parsed_ok); + EXPECT_FALSE(parsed_ok); parsed.assign(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; From 2300c604bbd2980641540b5e9bf1688b5d7240b5 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 17:03:00 +1000 Subject: [PATCH 03/21] squash: let make determine the number of jobs --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index d7fca5333..6e27157b9 100755 --- a/build.sh +++ b/build.sh @@ -13,6 +13,6 @@ cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \ -DUri_DISABLE_LIBCXX=$Uri_DISABLE_LIBCXX \ -DCMAKE_CXX_FLAGS="-std=c++11 ${CMAKE_CXX_FLAGS}" \ .. -make -j8 +make -j make test cd .. From 0f42783b433408e0f587f4342f58b72b9967c52a Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 17:45:12 +1000 Subject: [PATCH 04/21] squash: use ccache for the build --- .travis.yml | 36 ++++++------ CMakeLists.txt | 7 +++ build.sh | 2 +- .../http/response_incremental_parser_test.cpp | 56 +++++++++---------- 4 files changed, 55 insertions(+), 46 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6da551409..e42dbe184 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,17 +4,17 @@ compiler: - g++ - clang env: -- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="ON" CMAKE_BUILD_TYPE="Release" ENABLE_HTTPS="ON" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES -- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="ON" CMAKE_BUILD_TYPE="Release" ENABLE_HTTPS="OFF" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES -- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="ON" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES -- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="ON" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="OFF" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES -- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Release" ENABLE_HTTPS="ON" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES -- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Release" ENABLE_HTTPS="OFF" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES -- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES -- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="OFF" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="ON" CMAKE_BUILD_TYPE="Release" ENABLE_HTTPS="ON" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="ON" CMAKE_BUILD_TYPE="Release" ENABLE_HTTPS="OFF" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="ON" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="ON" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="OFF" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Release" ENABLE_HTTPS="ON" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Release" ENABLE_HTTPS="OFF" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="OFF" Uri_BUILD_TESTS=OFF Uri_DISABLE_LIBCXX=YES # Support the sanitizers in clang only -# - BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=thread" -# - BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=address" +- BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=thread" Uri_BUILD_TEST=OFF Uri_DISABLE_LIBCXX=YES +- BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=address" Uri_BUILD_TEST=OFF Uri_DISABLE_LIBCXX=YES # TODO(deanberris): It seems Boost is not msan-clean yet; report bugs and maybe fix? #- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" # matrix: @@ -28,16 +28,14 @@ env: # env: BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" install: - mkdir -p ${HOME}/bin -- if [ "${CC}" = "gcc" ]; then export TOOLSET="gcc"; ln -s `which g++-4.8` ${HOME}/bin/g++; - ln -s `which gcc-4.8` ${HOME}/bin/gcc; fi +- if [ "${CC}" = "gcc" ]; then export TOOLSET="gcc"; ln -s `which g++-4.9` ${HOME}/bin/g++; + ln -s `which gcc-4.9` ${HOME}/bin/gcc; fi - if [ "${CC}" = "clang" ]; then export TOOLSET="clang"; ln -s `which clang-3.6` ${HOME}/bin/clang; ln -s `which clang++-3.6` ${HOME}/bin/clang++; fi - export BOOST_VERSION=${BOOST_VER//./_} - export PATH=${HOME}/bin:${PATH} - "${CXX} --version" -cache: - directories: - - "${HOME}/${CC}-boost_${BOOST_VER//./_}" +cache: ccache script: - pwd - sh -x build.sh @@ -48,14 +46,18 @@ addons: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.6 + - llvm-toolchain-precise-3.8 - kalakris-cmake - boost-latest + - george-edison55-precise-backports packages: - libboost1.55-all-dev - - gcc-4.8 - - g++-4.8 + - gcc-4.9 + - g++-4.9 - clang-3.6 + - clang-3.8 - cmake + - cmake-data notifications: slack: secure: Y7lLjqZ83+b/jaJ5+EKwvgCDeERi4bVbDn9tLp8sieTdu+ENsPI+JmLYSXZXPpe7JrItrXW6uJJXN2wG1h7au4mpVVTghd31HBzuzrqVxDphWPhp16NYzvbAgQQRBXvFVvfSdW/Kb/n2fX6xDApY0t6vNREb/GKg0GyzESb4ZjU= diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b29d78b0..7d981bc21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,6 +140,13 @@ if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") endif() +# See whether we can find the ccache program -- if we can, then use it for the build. +find_program(CCACHE_FOUND ccache) +if(CCACHE_FOUND) + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) +endif(CCACHE_FOUND) + enable_testing() install(DIRECTORY boost DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/build.sh b/build.sh index 6e27157b9..8e3e31d7e 100755 --- a/build.sh +++ b/build.sh @@ -13,6 +13,6 @@ cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \ -DUri_DISABLE_LIBCXX=$Uri_DISABLE_LIBCXX \ -DCMAKE_CXX_FLAGS="-std=c++11 ${CMAKE_CXX_FLAGS}" \ .. -make -j +make make test cd .. diff --git a/libs/network/test/http/response_incremental_parser_test.cpp b/libs/network/test/http/response_incremental_parser_test.cpp index 09a14d12d..aeaa88cc5 100644 --- a/libs/network/test/http/response_incremental_parser_test.cpp +++ b/libs/network/test/http/response_incremental_parser_test.cpp @@ -82,7 +82,7 @@ TEST(IncrementalResponseParserTest, ParseHTTPVersion) { std::string valid_http_version = "HTTP/1.0 "; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_version_done, valid_http_version); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_FALSE(boost::empty(result_range)); std::string parsed(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; @@ -90,7 +90,7 @@ TEST(IncrementalResponseParserTest, ParseHTTPVersion) { valid_http_version = "HTTP/1.1 "; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_version_done, valid_http_version); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_FALSE(boost::empty(result_range)); parsed.assign(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; @@ -109,7 +109,7 @@ TEST(IncrementalResponseParserTest, ParseHTTPVersion) { parsed_ok = logic::indeterminate; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_version_done, valid_http_version); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed.assign(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; } @@ -137,7 +137,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseStatus) { range_type result_range; std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_status_done, valid_status); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); std::string parsed = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; @@ -153,7 +153,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseStatus) { valid_status = "200" + TypeParam::literal; std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_status_done, valid_status); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; } @@ -171,7 +171,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseStatusMessage) { range_type result_range; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_status_message_done, valid_status_message); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); std::string parsed = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; @@ -180,7 +180,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseStatusMessage) { valid_status_message = "OK" + TypeParam::literal; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_status_message_done, valid_status_message); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; @@ -188,7 +188,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseStatusMessage) { valid_status_message = "Internal Server Error" + TypeParam::literal; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_status_message_done, valid_status_message); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; @@ -196,7 +196,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseStatusMessage) { valid_status_message = TypeParam::literal; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_status_message_done, valid_status_message); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; @@ -204,7 +204,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseStatusMessage) { valid_status_message = "한글메시지" + TypeParam::literal; std::tie(parsed_ok, result_range) = p.parse_until( response_parser_type::http_status_message_done, valid_status_message); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed << " state=" << p.state() << std::endl; } @@ -224,7 +224,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { range_type result_range; std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); std::string parsed1 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed1 << " state=" << p.state() << std::endl; @@ -233,7 +233,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { valid_headers.assign(std::end(result_range), end); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); std::string parsed2 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed2 << " state=" << p.state() << std::endl; @@ -241,7 +241,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { p.reset(response_parser_type::http_status_message_done); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_headers_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_NE(parsed1, parsed2); p.reset(response_parser_type::http_status_message_done); @@ -250,7 +250,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { eol::literal; std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed1 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed1 << " state=" << p.state() << std::endl; p.reset(response_parser_type::http_status_message_done); @@ -258,14 +258,14 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { valid_headers.assign(std::end(result_range), end); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed2 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed2 << " state=" << p.state() << std::endl; valid_headers.assign(std::end(result_range), end); p.reset(response_parser_type::http_status_message_done); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_headers_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_NE(parsed1, parsed2); p.reset(response_parser_type::http_status_message_done); @@ -274,7 +274,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { eol::literal; std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed1 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed1 << " state=" << p.state() << std::endl; p.reset(response_parser_type::http_status_message_done); @@ -282,14 +282,14 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { valid_headers.assign(std::end(result_range), end); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed2 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed2 << " state=" << p.state() << std::endl; valid_headers.assign(std::end(result_range), end); p.reset(response_parser_type::http_status_message_done); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_headers_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_NE(parsed1, parsed2); p.reset(response_parser_type::http_status_message_done); @@ -297,7 +297,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { eol::literal + eol::literal; std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed1 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed1 << " state=" << p.state() << std::endl; p.reset(response_parser_type::http_status_message_done); @@ -305,14 +305,14 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { valid_headers.assign(std::end(result_range), end); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed2 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed2 << " state=" << p.state() << std::endl; valid_headers.assign(std::end(result_range), end); p.reset(response_parser_type::http_status_message_done); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_headers_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_NE(parsed1, parsed2); p.reset(response_parser_type::http_status_message_done); @@ -321,7 +321,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { eol::literal; std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed1 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed1 << " state=" << p.state() << std::endl; p.reset(response_parser_type::http_status_message_done); @@ -329,14 +329,14 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { valid_headers.assign(std::end(result_range), end); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed2 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed2 << " state=" << p.state() << std::endl; valid_headers.assign(std::end(result_range), end); p.reset(response_parser_type::http_status_message_done); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_headers_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_NE(parsed1, parsed2); p.reset(response_parser_type::http_status_message_done); @@ -344,7 +344,7 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { eol::literal + eol::literal; std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed1 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed1 << " state=" << p.state() << std::endl; p.reset(response_parser_type::http_status_message_done); @@ -352,13 +352,13 @@ TYPED_TEST(IncrementalResponseEOLTypeTest, ParseHTTPHeaders) { valid_headers.assign(std::end(result_range), end); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_header_line_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); parsed2 = std::string(std::begin(result_range), std::end(result_range)); std::cout << "PARSED: " << parsed2 << " state=" << p.state() << std::endl; valid_headers.assign(std::end(result_range), end); p.reset(response_parser_type::http_status_message_done); std::tie(parsed_ok, result_range) = p.parse_until(response_parser_type::http_headers_done, valid_headers); - EXPECT_EQ(true, parsed_ok); + EXPECT_TRUE(parsed_ok); EXPECT_NE(parsed1, parsed2); } From 9a1121dd85d0da6cb41038f26608090d1b403d41 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 18:05:06 +1000 Subject: [PATCH 05/21] squash: set the compiler version properly --- .travis.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index e42dbe184..8fd7c888f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,13 +28,19 @@ env: # env: BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" install: - mkdir -p ${HOME}/bin -- if [ "${CC}" = "gcc" ]; then export TOOLSET="gcc"; ln -s `which g++-4.9` ${HOME}/bin/g++; - ln -s `which gcc-4.9` ${HOME}/bin/gcc; fi -- if [ "${CC}" = "clang" ]; then export TOOLSET="clang"; ln -s `which clang-3.6` ${HOME}/bin/clang; - ln -s `which clang++-3.6` ${HOME}/bin/clang++; fi -- export BOOST_VERSION=${BOOST_VER//./_} +- if [ "${CC}" = "gcc" ]; then ln -s `which g++-4.9` ${HOME}/bin/g++; + ln -s `which gcc-4.9` ${HOME}/bin/gcc; $HOME/bin/g++ --version; + export CXX=$HOME/bin/g++; + export CC=$HOME/bin/gcc; + fi +- if [ "${CC}" = "clang" ]; then ln -s `which clang-3.6` ${HOME}/bin/clang; + ln -s `which clang++-3.6` ${HOME}/bin/clang++; $HOME/bin/clang --version; + export CXX=$HOME/bin/clang++; + export CC=$HOME/bin/clang++; + fi - export PATH=${HOME}/bin:${PATH} - "${CXX} --version" +- "${CC} --version" cache: ccache script: - pwd From ea626d6358b179c8ba28a8ef25e3cf3b023fe5d8 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 18:07:12 +1000 Subject: [PATCH 06/21] squash: use clang-3.8 as test compiler --- .travis.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8fd7c888f..afebb1bd4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,13 +28,17 @@ env: # env: BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" install: - mkdir -p ${HOME}/bin -- if [ "${CC}" = "gcc" ]; then ln -s `which g++-4.9` ${HOME}/bin/g++; - ln -s `which gcc-4.9` ${HOME}/bin/gcc; $HOME/bin/g++ --version; +- if [ "${CC}" = "gcc" ]; + then ln -s `which g++-4.9` ${HOME}/bin/g++; + ln -s `which gcc-4.9` ${HOME}/bin/gcc; + $HOME/bin/g++ --version; export CXX=$HOME/bin/g++; export CC=$HOME/bin/gcc; fi -- if [ "${CC}" = "clang" ]; then ln -s `which clang-3.6` ${HOME}/bin/clang; - ln -s `which clang++-3.6` ${HOME}/bin/clang++; $HOME/bin/clang --version; +- if [ "${CC}" = "clang" ]; + then ln -s `which clang-3.8` ${HOME}/bin/clang; + ln -s `which clang++-3.8` ${HOME}/bin/clang++; + $HOME/bin/clang --version; export CXX=$HOME/bin/clang++; export CC=$HOME/bin/clang++; fi @@ -51,7 +55,6 @@ addons: apt: sources: - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.6 - llvm-toolchain-precise-3.8 - kalakris-cmake - boost-latest @@ -60,7 +63,6 @@ addons: - libboost1.55-all-dev - gcc-4.9 - g++-4.9 - - clang-3.6 - clang-3.8 - cmake - cmake-data From 8ef8677d5473e4b13531f2d4df25642c1e22c141 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 18:14:47 +1000 Subject: [PATCH 07/21] squash: exclude asan and tsan builds from g++ matrix --- .travis.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index afebb1bd4..ab4ab6803 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,12 +17,12 @@ env: - BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=address" Uri_BUILD_TEST=OFF Uri_DISABLE_LIBCXX=YES # TODO(deanberris): It seems Boost is not msan-clean yet; report bugs and maybe fix? #- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" -# matrix: -# exclude: -# - compiler: g++ -# env: BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=thread" -# - compiler: g++ -# env: BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=address" +matrix: + exclude: + - compiler: g++ + env: BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=thread" Uri_BUILD_TEST=OFF Uri_DISABLE_LIBCXX=YES + - compiler: g++ + env: BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=address" Uri_BUILD_TEST=OFF Uri_DISABLE_LIBCXX=YES # TODO(deanberris): It seems Boost is not msan-clean yet; report bugs and maybe fix? # - compiler: g++ # env: BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" From 47d91b2e7970bf07f3c867aa244df88d9626a7cd Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 18:29:08 +1000 Subject: [PATCH 08/21] squash: do not use ${HOME} --- .travis.yml | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index ab4ab6803..eeb94c192 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,22 +27,27 @@ matrix: # - compiler: g++ # env: BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" install: -- mkdir -p ${HOME}/bin +- pwd +- export CUR_DIR=`pwd` +- mkdir -p ${CUR_DIR}/bin - if [ "${CC}" = "gcc" ]; - then ln -s `which g++-4.9` ${HOME}/bin/g++; - ln -s `which gcc-4.9` ${HOME}/bin/gcc; - $HOME/bin/g++ --version; - export CXX=$HOME/bin/g++; - export CC=$HOME/bin/gcc; + then ls `which g++-4.9`; + ln -s `which g++-4.9` ${CUR_DIR}/bin/g++; + ln -s `which gcc-4.9` ${CUR_DIR}/bin/gcc; + $CUR_DIR/bin/g++ --version; + export CXX=${CUR_DIR}/bin/g++; + export CC=${CUR_DIR}/bin/gcc; fi - if [ "${CC}" = "clang" ]; - then ln -s `which clang-3.8` ${HOME}/bin/clang; - ln -s `which clang++-3.8` ${HOME}/bin/clang++; - $HOME/bin/clang --version; - export CXX=$HOME/bin/clang++; - export CC=$HOME/bin/clang++; + then ls `which clang-3.8`; + ln -s `which clang-3.8` ${CUR_DIR}/bin/clang; + ln -s `which clang++-3.8` ${CUR_DIR}/bin/clang++; + ${CUR_DIR}/bin/clang --version; + export CXX=${CUR_DIR}/bin/clang++; + export CC=${CUR_DIR}/bin/clang++; fi -- export PATH=${HOME}/bin:${PATH} +before_script: +- export PATH=${CUR_DIR}/bin:${PATH} - "${CXX} --version" - "${CC} --version" cache: ccache From dab4bd49ba6b411483a23a74f85e46e91258513a Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 18:35:41 +1000 Subject: [PATCH 09/21] squash: remove cache until we can make it work --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index eeb94c192..3df0c1a57 100644 --- a/.travis.yml +++ b/.travis.yml @@ -50,7 +50,6 @@ before_script: - export PATH=${CUR_DIR}/bin:${PATH} - "${CXX} --version" - "${CC} --version" -cache: ccache script: - pwd - sh -x build.sh From 2dd328e67289819771127c2477ca223c54c57bbb Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 18:51:41 +1000 Subject: [PATCH 10/21] squash: try installing ccache from testing too --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index 3df0c1a57..4c5b68b8f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,9 @@ env: - BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=address" Uri_BUILD_TEST=OFF Uri_DISABLE_LIBCXX=YES # TODO(deanberris): It seems Boost is not msan-clean yet; report bugs and maybe fix? #- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" +cache: + - apt + - ccache matrix: exclude: - compiler: g++ @@ -67,6 +70,7 @@ addons: - libboost1.55-all-dev - gcc-4.9 - g++-4.9 + - ccache - clang-3.8 - cmake - cmake-data From 4289ca9b08e8da7d11ffb2b33d6259856eb796b8 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 18:55:27 +1000 Subject: [PATCH 11/21] squash: fix link to c compiler --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4c5b68b8f..db4e2b0c7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,7 +47,7 @@ install: ln -s `which clang++-3.8` ${CUR_DIR}/bin/clang++; ${CUR_DIR}/bin/clang --version; export CXX=${CUR_DIR}/bin/clang++; - export CC=${CUR_DIR}/bin/clang++; + export CC=${CUR_DIR}/bin/clang; fi before_script: - export PATH=${CUR_DIR}/bin:${PATH} From 009e2d505876670a217fd7f67e38f4ce4d16860f Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 19:01:53 +1000 Subject: [PATCH 12/21] squash: still not use ccache --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index db4e2b0c7..9d52bdcf8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,6 @@ env: #- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" cache: - apt - - ccache matrix: exclude: - compiler: g++ From fcf669de25e7681ad6a9b028b03193243b7925fc Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 19:18:58 +1000 Subject: [PATCH 13/21] squash: remove ccache installation for now --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9d52bdcf8..5e5c1d12a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -50,6 +50,7 @@ install: fi before_script: - export PATH=${CUR_DIR}/bin:${PATH} +- export CCACHE_CPP2=yes - "${CXX} --version" - "${CC} --version" script: @@ -69,7 +70,6 @@ addons: - libboost1.55-all-dev - gcc-4.9 - g++-4.9 - - ccache - clang-3.8 - cmake - cmake-data From 5219b9483338582bacbfb8cf960a1ac923277d49 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 20:03:37 +1000 Subject: [PATCH 14/21] squash: use boost array/chrono for 1.55 --- boost/network/protocol/http/client/connection/async_normal.hpp | 2 +- boost/network/protocol/http/server/async_connection.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/boost/network/protocol/http/client/connection/async_normal.hpp b/boost/network/protocol/http/client/connection/async_normal.hpp index ccf68ef37..af2f350e5 100644 --- a/boost/network/protocol/http/client/connection/async_normal.hpp +++ b/boost/network/protocol/http/client/connection/async_normal.hpp @@ -187,7 +187,7 @@ struct http_async_connection callback, generator, ec, endpoint_range); })); if (timeout_ > 0) { - timer_.expires_from_now(std::chrono::seconds(timeout_)); + timer_.expires_from_now(boost::chrono::seconds(timeout_)); timer_.async_wait(request_strand_.wrap([=] (boost::system::error_code const &ec) { self->handle_timeout(ec); })); diff --git a/boost/network/protocol/http/server/async_connection.hpp b/boost/network/protocol/http/server/async_connection.hpp index b2a736f7b..722c4a9b6 100644 --- a/boost/network/protocol/http/server/async_connection.hpp +++ b/boost/network/protocol/http/server/async_connection.hpp @@ -345,7 +345,7 @@ struct async_connection } private: - typedef std::array + typedef boost::array buffer_type; public: From d42f0b3cc245095311ec64f9b9c4154adfa7184d Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 20:07:09 +1000 Subject: [PATCH 15/21] squash: try ccache again --- .travis.yml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5e5c1d12a..2679de737 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,7 @@ env: #- BOOST_VER=1.59.0 BUILD_SHARED_LIBS="OFF" CMAKE_BUILD_TYPE="Debug" ENABLE_HTTPS="ON" CMAKE_CXX_FLAGS="-fsanitize=memory -fsanitize-memory-track-origins=2" cache: - apt + - ccache matrix: exclude: - compiler: g++ @@ -33,25 +34,18 @@ install: - export CUR_DIR=`pwd` - mkdir -p ${CUR_DIR}/bin - if [ "${CC}" = "gcc" ]; - then ls `which g++-4.9`; - ln -s `which g++-4.9` ${CUR_DIR}/bin/g++; - ln -s `which gcc-4.9` ${CUR_DIR}/bin/gcc; - $CUR_DIR/bin/g++ --version; - export CXX=${CUR_DIR}/bin/g++; - export CC=${CUR_DIR}/bin/gcc; + export CXX=g++-4.9; + export CC=gcc-4.9; fi - if [ "${CC}" = "clang" ]; - then ls `which clang-3.8`; - ln -s `which clang-3.8` ${CUR_DIR}/bin/clang; - ln -s `which clang++-3.8` ${CUR_DIR}/bin/clang++; - ${CUR_DIR}/bin/clang --version; - export CXX=${CUR_DIR}/bin/clang++; - export CC=${CUR_DIR}/bin/clang; + export CXX=clang++-3.8; + export CC=clang-3.8; + export CCACHE_CPP2=yes fi before_script: -- export PATH=${CUR_DIR}/bin:${PATH} -- export CCACHE_CPP2=yes +- echo ${CXX} - "${CXX} --version" +- echo ${CC} - "${CC} --version" script: - pwd From a34471238e5c348c4f109566ffd2a641fb775e1f Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 20:25:56 +1000 Subject: [PATCH 16/21] squash: add proper boost.asio defines for supporting clang --- CMakeLists.txt | 3 ++- .../protocol/http/client/connection/async_normal.hpp | 6 +++--- boost/network/protocol/http/server/async_connection.hpp | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d981bc21..391df88b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,7 +97,8 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU) elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) # We want to link in C++11 mode in Clang too, but also set a high enough # template depth for the template metaprogramming. - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -ftemplate-depth=256 -std=c++11") + set (CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -Wall -ftemplate-depth=256 -std=c++11 -DBOOST_ASIO_HAS_STD_CHRONO -DBOOST_ASIO_HAS_STD_ARRAY") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # Use libc++ only in OS X. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") diff --git a/boost/network/protocol/http/client/connection/async_normal.hpp b/boost/network/protocol/http/client/connection/async_normal.hpp index af2f350e5..ab99579f9 100644 --- a/boost/network/protocol/http/client/connection/async_normal.hpp +++ b/boost/network/protocol/http/client/connection/async_normal.hpp @@ -147,7 +147,7 @@ struct http_async_connection connection_delegate_ptr; http_async_connection(resolver_type& resolver, resolve_function resolve, - bool follow_redirect, int timeout, + bool follow_redirect, int64_t timeout, bool remove_chunk_markers, connection_delegate_ptr delegate) : timeout_(timeout), @@ -187,7 +187,7 @@ struct http_async_connection callback, generator, ec, endpoint_range); })); if (timeout_ > 0) { - timer_.expires_from_now(boost::chrono::seconds(timeout_)); + timer_.expires_from_now(std::chrono::seconds(timeout_)); timer_.async_wait(request_strand_.wrap([=] (boost::system::error_code const &ec) { self->handle_timeout(ec); })); @@ -578,7 +578,7 @@ struct http_async_connection } } - int timeout_; + int64_t timeout_; bool remove_chunk_markers_; boost::asio::steady_timer timer_; bool is_timedout_; diff --git a/boost/network/protocol/http/server/async_connection.hpp b/boost/network/protocol/http/server/async_connection.hpp index 722c4a9b6..b2a736f7b 100644 --- a/boost/network/protocol/http/server/async_connection.hpp +++ b/boost/network/protocol/http/server/async_connection.hpp @@ -345,7 +345,7 @@ struct async_connection } private: - typedef boost::array + typedef std::array buffer_type; public: From 9050af67c83b8d2e663f1541687f39c931c7d7c1 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 20:27:24 +1000 Subject: [PATCH 17/21] squash: fix travis config --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2679de737..ff950dee4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,11 +33,11 @@ install: - pwd - export CUR_DIR=`pwd` - mkdir -p ${CUR_DIR}/bin -- if [ "${CC}" = "gcc" ]; +- if [ "${CC}" = "gcc" ]; then export CXX=g++-4.9; export CC=gcc-4.9; fi -- if [ "${CC}" = "clang" ]; +- if [ "${CC}" = "clang" ]; then export CXX=clang++-3.8; export CC=clang-3.8; export CCACHE_CPP2=yes From 1243a507a92dd373df30b9f6d485240931c890e5 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 20:33:09 +1000 Subject: [PATCH 18/21] squash: script better --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ff950dee4..2048428be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,7 +40,7 @@ install: - if [ "${CC}" = "clang" ]; then export CXX=clang++-3.8; export CC=clang-3.8; - export CCACHE_CPP2=yes + export CCACHE_CPP2=yes; fi before_script: - echo ${CXX} From b6cd5c438cb41ae954431ef592b2c4aba15fffb1 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 20:58:51 +1000 Subject: [PATCH 19/21] squash: add more boost.asio config options --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 391df88b6..32cf31d6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,7 +98,7 @@ elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) # We want to link in C++11 mode in Clang too, but also set a high enough # template depth for the template metaprogramming. set (CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -Wall -ftemplate-depth=256 -std=c++11 -DBOOST_ASIO_HAS_STD_CHRONO -DBOOST_ASIO_HAS_STD_ARRAY") + "${CMAKE_CXX_FLAGS} -Wall -ftemplate-depth=256 -std=c++11 -DBOOST_ASIO_HAS_STD_CHRONO -DBOOST_ASIO_HAS_STD_ARRAY -DBOOST_ASIO_HAS_STD_SHARED_PTR -DBOOST_ASIO_HAS_STD_ATOMIC -DBOOST_ASIO_HAS_VARIADIC_TEMPLATES -DBOOST_ASIO_HAS_MOVE") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # Use libc++ only in OS X. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") From 5a39a8668599e1f10bc83fc4ef54adf4b3e539c0 Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 21:08:47 +1000 Subject: [PATCH 20/21] squash: use boost thread v3 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32cf31d6e..682312b87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,7 +98,7 @@ elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) # We want to link in C++11 mode in Clang too, but also set a high enough # template depth for the template metaprogramming. set (CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} -Wall -ftemplate-depth=256 -std=c++11 -DBOOST_ASIO_HAS_STD_CHRONO -DBOOST_ASIO_HAS_STD_ARRAY -DBOOST_ASIO_HAS_STD_SHARED_PTR -DBOOST_ASIO_HAS_STD_ATOMIC -DBOOST_ASIO_HAS_VARIADIC_TEMPLATES -DBOOST_ASIO_HAS_MOVE") + "${CMAKE_CXX_FLAGS} -Wall -ftemplate-depth=256 -std=c++11 -DBOOST_ASIO_HAS_STD_CHRONO -DBOOST_ASIO_HAS_STD_ARRAY -DBOOST_ASIO_HAS_STD_SHARED_PTR -DBOOST_ASIO_HAS_STD_ATOMIC -DBOOST_ASIO_HAS_VARIADIC_TEMPLATES -DBOOST_ASIO_HAS_MOVE -DBOOST_THREAD_VERSION=3") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # Use libc++ only in OS X. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") From 17cef535fb4ae07b88856bcc40bdc8976ee3c7fd Mon Sep 17 00:00:00 2001 From: Dean Michael Berris Date: Thu, 6 Apr 2017 21:24:05 +1000 Subject: [PATCH 21/21] squash: use libstdc++ explicitly on Linux when using clang --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 682312b87..56534f32f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,6 +103,10 @@ elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang) # Use libc++ only in OS X. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lc++") + elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + # Use libstdc++ for Linux. + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++") + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lstdc++") endif() endif()