From f4fe10ba3808af1ae237fd519def7dff5ca2ad6f Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Thu, 14 May 2020 10:33:54 -0700 Subject: [PATCH] ircd::rfc3986: Add expectations for host and port parsers. --- ircd/rfc3986.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ircd/rfc3986.cc b/ircd/rfc3986.cc index 8a2f383e3..26eb2f8ac 100644 --- a/ircd/rfc3986.cc +++ b/ircd/rfc3986.cc @@ -635,13 +635,19 @@ try static const parser::rule rule { - (lit('[') >> raw[literal]) | raw[non_literal] + (&lit('[') > raw[literal]) | raw[non_literal] + ,"host" + }; + + static const parser::rule grammar + { + expect[rule >> omit[&lit(':') | eoi]] ,"host" }; string_view ret; const char *start(str.data()), *const stop(start + str.size()); - qi::parse(start, stop, eps > rule, ret); + qi::parse(start, stop, grammar, ret); return ret; } catch(const qi::expectation_failure &e) @@ -665,7 +671,7 @@ try static const parser::rule rule { - non_literal | (literal >> -(lit(':') >> parser::port) >> eoi) + non_literal | (literal >> -(lit(':') >> parser::port)) >> eoi ,"port" };