From 57cc06222394bc2ce8628fd56148726988f9d830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Bj=C3=B6rkevik?= Date: Mon, 28 Sep 2015 16:59:03 +0200 Subject: [PATCH] Use boost regex instead of std, because of buggy glibc++ in RHEL7 --- CMakeLists.txt | 2 +- server_http.hpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 460a6e7..c443ea0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ else() endif() #Only tested with versions 1.55 and 1.56 -find_package(Boost 1.54.0 COMPONENTS system thread coroutine context filesystem REQUIRED) +find_package(Boost 1.54.0 COMPONENTS regex system thread coroutine context filesystem REQUIRED) message("Boost include dir: ${Boost_INCLUDE_DIR}") message("Boost libraries: ${Boost_LIBRARIES}") include_directories(${Boost_INCLUDE_DIR}) diff --git a/server_http.hpp b/server_http.hpp index 75e8c21..87af746 100644 --- a/server_http.hpp +++ b/server_http.hpp @@ -3,8 +3,8 @@ #include #include +#include -#include #include #include #include @@ -65,7 +65,7 @@ namespace SimpleWeb { std::unordered_multimap header; - std::smatch path_match; + boost::smatch path_match; std::string remote_endpoint_address; unsigned short remote_endpoint_port; @@ -93,7 +93,7 @@ namespace SimpleWeb { std::function::Response&, std::shared_ptr::Request>)> > default_resource; private: - std::vector::Response&, std::shared_ptr::Request>)> > > > > opt_resource; public: @@ -114,7 +114,7 @@ namespace SimpleWeb { it=opt_resource.begin()+(opt_resource.size()-1); it->first=res_method.first; } - it->second.emplace_back(std::regex(res.first), res_method.second); + it->second.emplace_back(boost::regex(res.first), res_method.second); } } @@ -269,8 +269,8 @@ namespace SimpleWeb { for(auto& res: opt_resource) { if(request->method==res.first) { for(auto& res_path: res.second) { - std::smatch sm_res; - if(std::regex_match(request->path, sm_res, res_path.first)) { + boost::smatch sm_res; + if(boost::regex_match(request->path, sm_res, res_path.first)) { request->path_match=std::move(sm_res); write_response(socket, request, res_path.second); return;