From 9662d195cfe8160e6a3f7c312e1fc287ae9c7e47 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 5 Jun 2019 01:12:55 -0700 Subject: [PATCH] modules/client/directory/user: Modernize user directory query term interpretation. --- modules/client/directory/user.cc | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/modules/client/directory/user.cc b/modules/client/directory/user.cc index 1ec5f8394..da5572efe 100644 --- a/modules/client/directory/user.cc +++ b/modules/client/directory/user.cc @@ -29,9 +29,9 @@ resource::response post__search(client &client, const resource::request &request) { - const auto &search_term + const json::string &search_term { - unquote(request.at("search_term")) + request.at("search_term") }; const ushort &limit @@ -39,23 +39,19 @@ post__search(client &client, request.get("limit", 10) }; - m::room::state users - { - m::user::users - }; - // Search term in this endpoint comes in as-is from Riot. Our query // is a lower_bound of a user_id, so we have to prefix the '@'. - char qbuf[256] {'@'}; + char qbuf[256] {'@', '\0'}; const string_view &query { !startswith(search_term, '@')? - string_view{qbuf, strlcpy(qbuf+1, search_term, sizeof(qbuf))}: - search_term + string_view{strlcat{qbuf, search_term}}: + string_view{search_term} }; bool limited{true}; std::vector results; + const m::room::state &users{m::user::users}; users.for_each("ircd.user", query, [&results, &limit, &limited] (const m::event &event) {