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" };