From e64e4c598d0cfa54cd4ddf111d987c435593f3c2 Mon Sep 17 00:00:00 2001 From: Jamie Newbon Date: Thu, 14 Nov 2019 11:29:17 +0000 Subject: [PATCH] Changed to stringstream as Mac had problems with regex --- src/lib/net/SecureSocket.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/lib/net/SecureSocket.cpp b/src/lib/net/SecureSocket.cpp index 48ea585e..11bc05c0 100644 --- a/src/lib/net/SecureSocket.cpp +++ b/src/lib/net/SecureSocket.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -855,13 +856,23 @@ SecureSocket::showSecureConnectInfo() //For some reason SSL_get_version is return mismatching information to SSL_CIPHER_description // so grab the version out the description instead, This seems like a hacky way of doing it. // But when the cipher says "TLSv1.2" but the get_version returns "TLSv1/SSLv3" we it doesn't look right - const std::regex match(R"(^([\w-]*)\s+([\w-.]*).*$)"); - const std::string message(msg); - std::smatch stringMatch; - - if (std::regex_search(message, stringMatch, match)) { - const std::string protocol = stringMatch[2]; - LOG((CLOG_INFO "network encryption protocol: %s", protocol.c_str())); + // For some reason macOS hates regex's so stringstream is used + + std::istringstream iss(msg); + + //Take the stream input and splits it into a vetor directly + const std::vector parts{std::istream_iterator{iss}, + std::istream_iterator{}}; + if (parts.size() > 2) + { + //log the section containing the protocol version + LOG((CLOG_INFO "network encryption protocol: %s", parts[1].c_str())); + } + else + { + //log the error in spliting then display the whole description rather then nothing + LOG((CLOG_ERR "could not split cipher for protocol")); + LOG((CLOG_INFO "network encryption protocol: %s", msg)); } } else {