From 5a4a395fc201df2195631f5fe551a157b4e8100a Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Thu, 23 Jun 2022 19:18:05 -0700 Subject: [PATCH] Add noexcept to various lambdas (gcc-11). --- include/ircd/ctx/concurrent.h | 4 ++-- include/ircd/json/value.h | 3 ++- include/ircd/m/event/auth.h | 3 ++- include/ircd/tokens.h | 32 +++++++++++++-------------- include/ircd/util/params.h | 12 +++++----- ircd/cl.cc | 3 ++- ircd/client.cc | 2 +- ircd/ctx_ole.cc | 1 + ircd/db.cc | 18 +++++++-------- ircd/db.h | 4 ++-- ircd/db_database.cc | 2 ++ ircd/exec.cc | 4 ++-- ircd/fs_aio.cc | 4 ++-- ircd/fs_iou.cc | 2 +- ircd/gpt.cc | 2 +- ircd/ios.cc | 2 +- ircd/magick.cc | 2 +- ircd/mods_ldso.cc | 3 ++- ircd/net.cc | 12 +++++----- ircd/net_addrs.cc | 3 ++- ircd/net_dns_resolver.cc | 6 ++--- ircd/net_listener.cc | 2 +- ircd/net_listener_udp.cc | 4 ++-- ircd/resource.cc | 7 +++--- ircd/server.cc | 24 +++++++++++++------- ircd/tokens.cc | 18 +++++++++++++-- matrix/dbs_event_refs.cc | 4 ++-- matrix/event_horizon.cc | 4 ++-- matrix/fed_well_known.cc | 4 ++-- matrix/homeserver.cc | 5 +++-- matrix/init_backfill.cc | 2 +- matrix/node.cc | 4 ++-- matrix/room.cc | 10 ++++----- matrix/typing.cc | 2 +- matrix/user_tokens.cc | 6 ++--- matrix/vm.cc | 4 ++-- matrix/vm_eval.cc | 10 +++++---- matrix/vm_inject.cc | 2 +- modules/client/events.cc | 2 +- modules/client/profile.cc | 4 ++-- modules/client/rooms/send.cc | 2 +- modules/client/sync.cc | 6 +++-- modules/console.cc | 20 ++++++++++++----- modules/federation/make_join.cc | 2 +- modules/federation/send.cc | 2 +- modules/federation/sender.cc | 4 ++-- modules/federation/user_keys_claim.cc | 2 +- modules/m_bridge.cc | 2 +- modules/m_command.cc | 2 +- modules/m_listen.cc | 4 ++-- modules/net_dns_cache.cc | 2 +- modules/web_hook.cc | 4 ++-- 52 files changed, 170 insertions(+), 124 deletions(-) diff --git a/include/ircd/ctx/concurrent.h b/include/ircd/ctx/concurrent.h index fc4e85343..b5a7f9335 100644 --- a/include/ircd/ctx/concurrent.h +++ b/include/ircd/ctx/concurrent.h @@ -56,7 +56,7 @@ template void ircd::ctx::concurrent::wait() { - d.wait([this] + d.wait([this]() noexcept { return snd == fin; }); @@ -68,7 +68,7 @@ void ircd::ctx::concurrent::operator()(V&& v) { ++snd; - p([this, v(std::move(v))] + p([this, v(std::move(v))]() noexcept { ++rcv; try { diff --git a/include/ircd/json/value.h b/include/ircd/json/value.h index 2f2d53dfa..29bdc2927 100644 --- a/include/ircd/json/value.h +++ b/include/ircd/json/value.h @@ -125,7 +125,7 @@ struct ircd::json::value value(const json::object &); value(const json::array &); value(const nullptr_t &); - value(); + value() noexcept; value(value &&) noexcept; value(const value &); value &operator=(value &&) noexcept; @@ -137,6 +137,7 @@ static_assert(sizeof(ircd::json::value) == 16, ""); inline ircd::json::value::value() +noexcept :string{nullptr} ,len{0} ,type{STRING} diff --git a/include/ircd/m/event/auth.h b/include/ircd/m/event/auth.h index 1065db47b..a584a812a 100644 --- a/include/ircd/m/event/auth.h +++ b/include/ircd/m/event/auth.h @@ -68,7 +68,8 @@ ircd::m::event::auth::ids(event::id (&out)[N]) const { size_t i(0); - m::for_each(*this, [&i, &out](const event::id &event_id) + m::for_each(*this, [&i, &out] + (const event::id &event_id) noexcept { out[i++] = event_id; return i < N; diff --git a/include/ircd/tokens.h b/include/ircd/tokens.h index 60cbb578f..4ace18a8b 100644 --- a/include/ircd/tokens.h +++ b/include/ircd/tokens.h @@ -18,15 +18,15 @@ namespace ircd // to allocate and copy the token with null termination. using token_view = closure_bool; - bool tokens(const string_view &str, const char sep, const token_view &); - bool tokens(const string_view &str, const string_view &sep, const token_view &); + bool tokens(const string_view &, const char sep, const token_view &) noexcept; + bool tokens(const string_view &, const string_view &sep, const token_view &) noexcept; - size_t tokens(const string_view &str, const char sep, const size_t limit, const token_view &); - size_t tokens(const string_view &str, const string_view &sep, const size_t limit, const token_view &); + size_t tokens(const string_view &, const char sep, const size_t lim, const token_view &) noexcept; + size_t tokens(const string_view &, const string_view &sep, const size_t lim, const token_view &) noexcept; // Copies tokens into your buffer and null terminates strtok() style. Returns BYTES of buf consumed. - size_t tokens(const string_view &str, const char sep, const mutable_buffer &buf, const token_view &); - size_t tokens(const string_view &str, const string_view &sep, const mutable_buffer &buf, const token_view &); + size_t tokens(const string_view &, const char sep, const mutable_buffer &, const token_view &) noexcept; + size_t tokens(const string_view &, const string_view &sep, const mutable_buffer &, const token_view &) noexcept; // Receive token view into iterator range template bool + const auto condition{[&c, &desired] + () noexcept -> bool { return !c.event || c.status <= desired; }}; diff --git a/ircd/client.cc b/ircd/client.cc index 27b198b97..da3dd91f8 100644 --- a/ircd/client.cc +++ b/ircd/client.cc @@ -184,7 +184,7 @@ ircd::client::wait_all() static const auto is_empty { - [] { return client::map.empty(); } + []() noexcept { return client::map.empty(); } }; while(!dock.wait_for(seconds(3), is_empty)) diff --git a/ircd/ctx_ole.cc b/ircd/ctx_ole.cc index d3d0eb110..dfab90cb6 100644 --- a/ircd/ctx_ole.cc +++ b/ircd/ctx_ole.cc @@ -106,6 +106,7 @@ ircd::ctx::ole::offload::offload(const opts &opts, // synchronization we need to hit the latch from this thread. assert(context); signal(*context, [&latch] + () noexcept { assert(!latch.is_ready()); latch.count_down(); diff --git a/ircd/db.cc b/ircd/db.cc index 6b3409b37..508956220 100644 --- a/ircd/db.cc +++ b/ircd/db.cc @@ -579,7 +579,7 @@ noexcept queue.size(), }; - dock.wait_for(seconds(5), [this] + dock.wait_for(seconds(5), [this]() noexcept { return queue.empty(); }); @@ -640,7 +640,7 @@ size_t ircd::db::prefetcher::cancel(column &c) { return cancel([&c] - (const auto &request) + (const auto &request) noexcept { return request.cid == id(c); }); @@ -650,7 +650,7 @@ size_t ircd::db::prefetcher::cancel(database &d) { return cancel([&d] - (const auto &request) + (const auto &request) noexcept { return request.d == std::addressof(d); }); @@ -693,7 +693,7 @@ try { while(1) { - dock.wait([this] + dock.wait([this]() noexcept { if(queue.empty()) return false; @@ -893,7 +893,7 @@ ircd::db::prefetcher::wait_pending() fetched_counter + request_workers }; - dock.wait([this, &fetched_target] + dock.wait([this, &fetched_target]() noexcept { return this->ticker->fetched >= fetched_target; }); @@ -1415,7 +1415,7 @@ ircd::db::txn::has(const op &op, const { return !for_each(*this, delta_closure_bool{[&op, &col] - (const auto &delta) + (const auto &delta) noexcept { return std::get(delta) != op && std::get(delta) != col; @@ -1463,7 +1463,7 @@ ircd::db::txn::has(const op &op, const { return !for_each(*this, delta_closure_bool{[&op, &col, &key] - (const auto &delta) + (const auto &delta) noexcept { return std::get(delta) != op && std::get(delta) != col && @@ -3009,7 +3009,7 @@ ircd::db::bytes_value(column &column, { size_t ret{0}; column(key, std::nothrow, gopts, [&ret] - (const string_view &value) + (const string_view &value) noexcept { ret = value.size(); }); @@ -4057,7 +4057,7 @@ ircd::db::count(const rocksdb::Cache &cache) { size_t ret(0); for_each(cache, [&ret] - (const const_buffer &) + (const const_buffer &) noexcept { ++ret; }); diff --git a/ircd/db.h b/ircd/db.h index 99a6c012e..eb8e0fcb1 100644 --- a/ircd/db.h +++ b/ircd/db.h @@ -297,7 +297,7 @@ ircd::db::database::mergeop final bool Merge(const rocksdb::Slice &, const rocksdb::Slice *, const rocksdb::Slice &, std::string *, rocksdb::Logger *) const noexcept override; const char *Name() const noexcept override; - mergeop(database *const &d, merge_closure merger = nullptr); + mergeop(database *const &d, merge_closure merger = nullptr) noexcept; ~mergeop() noexcept; }; @@ -506,7 +506,7 @@ ircd::db::database::logger final rocksdb::Status Close() noexcept override; - logger(database *const &d); + logger(database *const &d) noexcept; ~logger() noexcept override; }; diff --git a/ircd/db_database.cc b/ircd/db_database.cc index d454cc780..3d0a700b7 100644 --- a/ircd/db_database.cc +++ b/ircd/db_database.cc @@ -2144,6 +2144,7 @@ noexcept // ircd::db::database::logger::logger(database *const &d) +noexcept :rocksdb::Logger{} ,d{d} { @@ -2248,6 +2249,7 @@ noexcept ircd::db::database::mergeop::mergeop(database *const &d, merge_closure merger) +noexcept :d{d} ,merger { diff --git a/ircd/exec.cc b/ircd/exec.cc index c3865f100..e567eefcb 100644 --- a/ircd/exec.cc +++ b/ircd/exec.cc @@ -84,7 +84,7 @@ ircd::exec::~exec() noexcept try { join(SIGKILL); - dock.wait([this] + dock.wait([this]() noexcept { return this->pid <= 0; }); @@ -150,7 +150,7 @@ try }; //child->wait(); - dock.wait([this] + dock.wait([this]() noexcept { return this->pid <= 0; }); diff --git a/ircd/fs_aio.cc b/ircd/fs_aio.cc index 6ce11220a..82cda1fce 100644 --- a/ircd/fs_aio.cc +++ b/ircd/fs_aio.cc @@ -648,7 +648,7 @@ ircd::fs::aio::request::queued() const { return !for_each_queued([this] - (const auto &request) + (const auto &request) noexcept { return &request != this; // true to continue and return true }); @@ -853,7 +853,7 @@ ircd::fs::aio::system::wait() log, "Waiting for AIO context %p", this }; - dock.wait([this] + dock.wait([this]() noexcept { return ecount == uint64_t(-1); }); diff --git a/ircd/fs_iou.cc b/ircd/fs_iou.cc index 17d7a8545..346ca8954 100644 --- a/ircd/fs_iou.cc +++ b/ircd/fs_iou.cc @@ -478,7 +478,7 @@ ircd::fs::iou::system::wait() log, "Waiting for iou context %p", this }; - dock.wait([this] + dock.wait([this]() noexcept { return ev_count == uint64_t(-1); }); diff --git a/ircd/gpt.cc b/ircd/gpt.cc index 96be65de9..100f70a84 100644 --- a/ircd/gpt.cc +++ b/ircd/gpt.cc @@ -914,7 +914,7 @@ ircd::gpt::samp::tokenize() } ircd::tokens(str, delim, [this, &count, &p, &phrases] - (const string_view &phrase) -> bool + (const string_view &phrase) noexcept -> bool { assert(!empty(phrase)); const vector_view buf diff --git a/ircd/ios.cc b/ircd/ios.cc index 08b7abd26..836da2913 100644 --- a/ircd/ios.cc +++ b/ircd/ios.cc @@ -590,7 +590,7 @@ ircd::ios::dispatch::dispatch(descriptor &descriptor, yield_t) :dispatch { - descriptor, defer, yield, [] + descriptor, defer, yield, []() noexcept { } } diff --git a/ircd/magick.cc b/ircd/magick.cc index dfffd9bcf..48a18c48d 100644 --- a/ircd/magick.cc +++ b/ircd/magick.cc @@ -258,7 +258,7 @@ noexcept }; call_ready = false; - call_dock.wait([] + call_dock.wait([]() noexcept { return !call_mutex.locked(); }); diff --git a/ircd/mods_ldso.cc b/ircd/mods_ldso.cc index 7fd06d45e..66f3b1f38 100644 --- a/ircd/mods_ldso.cc +++ b/ircd/mods_ldso.cc @@ -172,7 +172,8 @@ size_t ircd::mods::ldso::count() { size_t ret(0); - for_each([&ret](const struct link_map &) + for_each([&ret] + (const struct link_map &) noexcept { ++ret; return true; diff --git a/ircd/net.cc b/ircd/net.cc index 306b47ddf..f0e4810fa 100644 --- a/ircd/net.cc +++ b/ircd/net.cc @@ -643,7 +643,7 @@ const ircd::net::close_opts_default /// of close(). This callback does nothing. ircd::net::close_callback const ircd::net::close_ignore{[] -(std::exception_ptr eptr) +(std::exception_ptr eptr) noexcept { return; }}; @@ -1550,7 +1550,7 @@ try { assert(!fini); const auto interruption{[this] - (ctx::ctx *const &) + (ctx::ctx *const &) noexcept { this->cancel(); }}; @@ -1742,7 +1742,7 @@ try assert(!fini); const auto interruption{[this] - (ctx::ctx *const &) + (ctx::ctx *const &) noexcept { this->cancel(); }}; @@ -1781,7 +1781,7 @@ try { assert(!fini); const auto interruption{[this] - (ctx::ctx *const &) + (ctx::ctx *const &) noexcept { this->cancel(); }}; @@ -1887,7 +1887,7 @@ try assert(!fini); assert(!blocking(*this)); const auto interruption{[this] - (ctx::ctx *const &) + (ctx::ctx *const &) noexcept { this->cancel(); }}; @@ -1921,7 +1921,7 @@ try assert(!fini); assert(!blocking(*this)); const auto interruption{[this] - (ctx::ctx *const &) + (ctx::ctx *const &) noexcept { this->cancel(); }}; diff --git a/ircd/net_addrs.cc b/ircd/net_addrs.cc index 87a8d5e34..36c15fc22 100644 --- a/ircd/net_addrs.cc +++ b/ircd/net_addrs.cc @@ -15,7 +15,8 @@ bool ircd::net::addrs::has_usable_ipv6_interface() try { - return !for_each([](const addr &a) + return !for_each([] + (const addr &a) noexcept { if(a.family != AF_INET6) return true; diff --git a/ircd/net_dns_resolver.cc b/ircd/net_dns_resolver.cc index 0891464f2..47e37a642 100644 --- a/ircd/net_dns_resolver.cc +++ b/ircd/net_dns_resolver.cc @@ -126,7 +126,7 @@ ircd::net::dns::resolver::~resolver() noexcept { const ctx::uninterruptible::nothrow ui; - done.wait([this] + done.wait([this]() noexcept { if(!tags.empty()) log::warning @@ -231,7 +231,7 @@ ircd::net::dns::resolver::sendq_worker() { while(1) { - dock.wait([this] + dock.wait([this]() noexcept { assert(sendq.empty() || !tags.empty()); return !sendq.empty() && !server.empty(); @@ -289,7 +289,7 @@ ircd::net::dns::resolver::timeout_worker() // Dock here until somebody submits a request into the tag map. Also // wait until recv_idle is asserted which indicates the UDP queue has // been exhausted. - dock.wait([this] + dock.wait([this]() noexcept { return !tags.empty() && recv_idle; }); diff --git a/ircd/net_listener.cc b/ircd/net_listener.cc index 5b0517bb8..471675e6d 100644 --- a/ircd/net_listener.cc +++ b/ircd/net_listener.cc @@ -439,7 +439,7 @@ noexcept try if(!ctx::current) return; - joining.wait([this] + joining.wait([this]() noexcept { return !accepting && handshaking.empty(); }); diff --git a/ircd/net_listener_udp.cc b/ircd/net_listener_udp.cc index d96d0f4b4..d0cfcdb26 100644 --- a/ircd/net_listener_udp.cc +++ b/ircd/net_listener_udp.cc @@ -153,7 +153,7 @@ ircd::net::acceptor_udp::join() noexcept try { interrupt(); - joining.wait([this] + joining.wait([this]() noexcept { return waiting == 0; }); @@ -194,7 +194,7 @@ ircd::net::acceptor_udp::operator()(datagram &datagram) }; const auto interruption{[this] - (ctx::ctx *const &) + (ctx::ctx *const &) noexcept { this->interrupt(); }}; diff --git a/ircd/resource.cc b/ircd/resource.cc index a435f52b0..8c52b6e2d 100644 --- a/ircd/resource.cc +++ b/ircd/resource.cc @@ -256,7 +256,8 @@ const char allow_methods_buf[48]; const string_view &allow_methods { - method_list(allow_methods_buf, [&](const method &method) + method_list(allow_methods_buf, [&] + (const method &method) noexcept { return true; }) @@ -281,7 +282,7 @@ ircd::resource::method_list(const mutable_buffer &buf) const { return method_list(buf, [] - (const method &) + (const method &) noexcept { return true; }); @@ -474,7 +475,7 @@ noexcept }; const ctx::uninterruptible::nothrow ui; - idle_dock.wait([this] + idle_dock.wait([this]() noexcept { return !stats || stats->pending == 0; }); diff --git a/ircd/server.cc b/ircd/server.cc index cc4c3688b..2d7a4f5bf 100644 --- a/ircd/server.cc +++ b/ircd/server.cc @@ -637,7 +637,8 @@ try return {}; parse::buffer pb{request.in.head}; - parse::capstan pc{pb, [](char *&read, char *stop) + parse::capstan pc{pb, [] + (char *&read, char *stop) noexcept { read = stop; }}; @@ -670,7 +671,8 @@ try return {}; parse::buffer pb{request.out.head}; - parse::capstan pc{pb, [](char *&read, char *stop) + parse::capstan pc{pb, [] + (char *&read, char *stop) noexcept { read = stop; }}; @@ -759,7 +761,8 @@ ircd::server::peer::only_ipv6 { { "name", "ircd.server.peer.ipv6.only" }, { "default", net::sock_opts::IGN }, - }, [] + }, + []() noexcept { sock_opts.v6only = ssize_t(only_ipv6); } @@ -771,7 +774,8 @@ ircd::server::peer::sock_nodelay { { "name", "ircd.server.peer.sock.nodelay" }, { "default", true }, - }, [] + }, + []() noexcept { sock_opts.nodelay = ssize_t(sock_nodelay); } @@ -783,7 +787,8 @@ ircd::server::peer::sock_read_bufsz { { "name", "ircd.server.peer.sock.read.bufsz" }, { "default", net::sock_opts::IGN }, - }, [] + }, + []() noexcept { sock_opts.read_bufsz = ssize_t(sock_read_bufsz); } @@ -795,7 +800,8 @@ ircd::server::peer::sock_read_lowat { { "name", "ircd.server.peer.sock.read.lowat" }, { "default", net::sock_opts::IGN }, - }, [] + }, + []() noexcept { sock_opts.read_lowat = ssize_t(sock_read_lowat); } @@ -807,7 +813,8 @@ ircd::server::peer::sock_write_bufsz { { "name", "ircd.server.peer.sock.write.bufsz" }, { "default", net::sock_opts::IGN }, - }, [] + }, + []() noexcept { sock_opts.write_bufsz = ssize_t(sock_write_bufsz); } @@ -819,7 +826,8 @@ ircd::server::peer::sock_write_lowat { { "name", "ircd.server.peer.sock.write.lowat" }, { "default", net::sock_opts::IGN }, - }, [] + }, + []() noexcept { sock_opts.write_lowat = ssize_t(sock_write_lowat); } diff --git a/ircd/tokens.cc b/ircd/tokens.cc index 6fc59941e..86c67d72a 100644 --- a/ircd/tokens.cc +++ b/ircd/tokens.cc @@ -52,6 +52,7 @@ ircd::string_view ircd::tokens_before(const string_view &str, const char sep, const size_t i) +noexcept { assert(sep != '\0'); const char _sep[2] @@ -66,6 +67,7 @@ ircd::string_view ircd::tokens_before(const string_view &str, const string_view &sep, const size_t i) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -92,6 +94,7 @@ ircd::string_view ircd::tokens_after(const string_view &str, const char sep, const ssize_t i) +noexcept { assert(sep != '\0'); const char _sep[2] @@ -106,6 +109,7 @@ ircd::string_view ircd::tokens_after(const string_view &str, const string_view &sep, const ssize_t i) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -191,7 +195,7 @@ ircd::token(const string_view &str, const char sep, const size_t i, const string_view &def) -try +noexcept try { return token(str, sep, i); } @@ -205,7 +209,7 @@ ircd::token(const string_view &str, const string_view &sep, const size_t i, const string_view &def) -try +noexcept try { return token(str, sep, i); } @@ -254,6 +258,7 @@ bool ircd::token_exists(const string_view &str, const char sep, const string_view &tok) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -272,6 +277,7 @@ bool ircd::token_exists(const string_view &str, const string_view &sep, const string_view &tok) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -289,6 +295,7 @@ ircd::token_exists(const string_view &str, size_t ircd::token_count(const string_view &str, const char sep) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -306,6 +313,7 @@ ircd::token_count(const string_view &str, size_t ircd::token_count(const string_view &str, const string_view &sep) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -325,6 +333,7 @@ ircd::tokens(const string_view &str, const char sep_, const mutable_buffer &buf, const token_view &closure) +noexcept { assert(sep_ != '\0'); const char _sep[2] @@ -345,6 +354,7 @@ ircd::tokens(const string_view &str, const string_view &sep, const mutable_buffer &buf, const token_view &closure) +noexcept { char *ptr(data(buf)); char *const stop(data(buf) + size(buf)); @@ -369,6 +379,7 @@ ircd::tokens(const string_view &str, const char sep, const size_t limit, const token_view &closure) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -393,6 +404,7 @@ ircd::tokens(const string_view &str, const string_view &sep, const size_t limit, const token_view &closure) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -416,6 +428,7 @@ bool ircd::tokens(const string_view &str, const char sep, const token_view &closure) +noexcept { using type = string_view; using iter = typename type::const_iterator; @@ -438,6 +451,7 @@ bool ircd::tokens(const string_view &str, const string_view &sep, const token_view &closure) +noexcept { using type = string_view; using iter = typename type::const_iterator; diff --git a/matrix/dbs_event_refs.cc b/matrix/dbs_event_refs.cc index 1d4400022..d828b7b2d 100644 --- a/matrix/dbs_event_refs.cc +++ b/matrix/dbs_event_refs.cc @@ -81,12 +81,12 @@ const ircd::db::prefix_transform ircd::m::dbs::desc::event_refs__pfx { "_event_refs", - [](const string_view &key) + [](const string_view &key) noexcept { return size(key) >= sizeof(event::idx) * 2; }, - [](const string_view &key) + [](const string_view &key) noexcept { assert(size(key) >= sizeof(event::idx)); return string_view diff --git a/matrix/event_horizon.cc b/matrix/event_horizon.cc index b0ff21212..7d299b52e 100644 --- a/matrix/event_horizon.cc +++ b/matrix/event_horizon.cc @@ -83,7 +83,7 @@ const { size_t ret(0); for_each([&ret] - (const auto &, const auto &) + (const auto &, const auto &) noexcept { ++ret; return true; @@ -97,7 +97,7 @@ ircd::m::event::horizon::has(const event::idx &event_idx) const { return !for_each([&event_idx] - (const auto &, const auto &_event_idx) + (const auto &, const auto &_event_idx) noexcept { // false to break; true to continue. return _event_idx == event_idx? false : true; diff --git a/matrix/fed_well_known.cc b/matrix/fed_well_known.cc index 0ba0b2109..7d6c8c028 100644 --- a/matrix/fed_well_known.cc +++ b/matrix/fed_well_known.cc @@ -117,7 +117,7 @@ ircd::m::fed::well_known::worker_context decltype(ircd::m::fed::well_known::handle_quit) ircd::m::fed::well_known::handle_quit { - run::level::QUIT, [] + run::level::QUIT, []() noexcept { worker_dock.notify_all(); } @@ -316,7 +316,7 @@ try run::barrier{}; while(!request::list.empty() || run::level == run::level::RUN) { - worker_dock.wait([] + worker_dock.wait([]() noexcept { return !request::list.empty() || run::level != run::level::RUN; }); diff --git a/matrix/homeserver.cc b/matrix/homeserver.cc index 24ac16e23..63adf4ed3 100644 --- a/matrix/homeserver.cc +++ b/matrix/homeserver.cc @@ -88,7 +88,7 @@ bool ircd::m::myself(const m::user::id &user_id) { return !for_each([&user_id] - (const auto &homeserver) + (const auto &homeserver) noexcept { return homeserver.self != user_id; }); @@ -581,7 +581,8 @@ const bool dup{false}, exists{false}; if(!force) - get(key, [&exists, &dup, &val](const string_view &val_) + get(key, [&exists, &dup, &val] + (const string_view &val_) noexcept { exists = true; dup = val == val_; diff --git a/matrix/init_backfill.cc b/matrix/init_backfill.cc index c56f71a6c..78a21b384 100644 --- a/matrix/init_backfill.cc +++ b/matrix/init_backfill.cc @@ -290,7 +290,7 @@ try // All rooms have been submitted to the pool but the pool workers might // still be busy. If we unwind now the pool's dtor will kill the workers // so we synchronize their completion here. - dock.wait([] + dock.wait([]() noexcept { return complete >= count; }); diff --git a/matrix/node.cc b/matrix/node.cc index 504cea9b1..290a42113 100644 --- a/matrix/node.cc +++ b/matrix/node.cc @@ -157,7 +157,7 @@ ircd::m::node::mitsein::has(const m::node &other, const { return !for_each(other, membership, [] - (const auto &, const auto &) + (const auto &, const auto &) noexcept { return false; }); @@ -170,7 +170,7 @@ const { size_t ret(0); for_each(other, membership, [&ret] - (const auto &, const auto &) + (const auto &, const auto &) noexcept { ++ret; return true; diff --git a/matrix/room.cc b/matrix/room.cc index 140faab20..838c9db5b 100644 --- a/matrix/room.cc +++ b/matrix/room.cc @@ -791,7 +791,7 @@ ircd::m::contains(const id::room &room_id, const event::idx &event_idx) { return m::query(event_idx, "room_id", [&room_id] - (const string_view &_room_id) -> bool + (const string_view &_room_id) noexcept -> bool { return _room_id == room_id; }); @@ -1088,7 +1088,7 @@ const { size_t ret(0); for_each(event::closure_idx_bool{[&ret] - (const event::idx &event_idx) + (const event::idx &event_idx) noexcept { ++ret; return true; @@ -1103,7 +1103,7 @@ const { size_t ret(0); for_each(type, event::closure_idx_bool{[&ret] - (const event::idx &event_idx) + (const event::idx &event_idx) noexcept { ++ret; return true; @@ -1122,7 +1122,7 @@ const (const event::idx &event_idx) { ret += query(std::nothrow, event_idx, "state_key", [&state_key] - (const string_view &_state_key) -> bool + (const string_view &_state_key) noexcept -> bool { return state_key == _state_key; }); @@ -1201,7 +1201,7 @@ const { event::idx ret{0}; for_each(type, event::closure_idx_bool{[&ret] - (const event::idx &event_idx) + (const event::idx &event_idx) noexcept { ret = event_idx; return false; diff --git a/matrix/typing.cc b/matrix/typing.cc index 5864682c6..db5c292cc 100644 --- a/matrix/typing.cc +++ b/matrix/typing.cc @@ -105,7 +105,7 @@ try { for(;; ctx::sleep(milliseconds(timeout_int))) { - dock.wait([] + dock.wait([]() noexcept { return !typists.empty(); }); diff --git a/matrix/user_tokens.cc b/matrix/user_tokens.cc index 3e83cbb07..fa3b3522d 100644 --- a/matrix/user_tokens.cc +++ b/matrix/user_tokens.cc @@ -45,7 +45,7 @@ const const auto match { - [this](const string_view &sender) + [this](const string_view &sender) noexcept { return sender == this->user.user_id; } @@ -90,7 +90,7 @@ const }; return event_idx && m::query(std::nothrow, event_idx, "sender", [this] - (const string_view &sender) + (const string_view &sender) noexcept { return sender == this->user.user_id; }); @@ -120,7 +120,7 @@ const { const auto match { - [this](const string_view &sender) + [this](const string_view &sender) noexcept { return sender == this->user.user_id; } diff --git a/matrix/vm.cc b/matrix/vm.cc index 843a8d825..9a48f8e42 100644 --- a/matrix/vm.cc +++ b/matrix/vm.cc @@ -66,7 +66,7 @@ noexcept sequence::pending, }; - vm::dock.wait([] + vm::dock.wait([]() noexcept { return !eval::executing && !eval::injecting; }); @@ -81,7 +81,7 @@ noexcept sequence::uncommitted, }; - sequence::dock.wait([] + sequence::dock.wait([]() noexcept { return !sequence::pending; }); diff --git a/matrix/vm_eval.cc b/matrix/vm_eval.cc index ce721afd1..484b9dd98 100644 --- a/matrix/vm_eval.cc +++ b/matrix/vm_eval.cc @@ -153,7 +153,7 @@ noexcept { eval *ret {nullptr}; eval::for_each(&c, [&ret, &a] - (eval &eval) + (eval &eval) noexcept { const bool cond { @@ -377,7 +377,8 @@ ircd::m::vm::eval * ircd::m::vm::eval::find(const event::id &event_id) { eval *ret{nullptr}; - for_each([&event_id, &ret](eval &e) + for_each([&event_id, &ret] + (eval &e) noexcept { if(e.event_) if(e.event_->event_id == event_id) @@ -393,7 +394,8 @@ size_t ircd::m::vm::eval::count(const event::id &event_id) { size_t ret(0); - for_each([&event_id, &ret](eval &e) + for_each([&event_id, &ret] + (eval &e) noexcept { if(e.event_) if(e.event_->event_id == event_id) @@ -410,7 +412,7 @@ ircd::m::vm::eval::find_pdu(const event::id &event_id) { const m::event *ret{nullptr}; for_each_pdu([&ret, &event_id] - (const m::event &event) + (const m::event &event) noexcept { if(event.event_id != event_id) return true; diff --git a/matrix/vm_inject.cc b/matrix/vm_inject.cc index bce8453da..21b9a9300 100644 --- a/matrix/vm_inject.cc +++ b/matrix/vm_inject.cc @@ -250,7 +250,7 @@ ircd::m::vm::inject(eval &eval, { event, opts.prop_mask.has("depth") && !event.has("depth"), { - "depth", [&depth] + "depth", [&depth]() noexcept { // When the depth value is undefined_number it was intended // that no depth should appear in the event JSON so that value diff --git a/modules/client/events.cc b/modules/client/events.cc index 8d73db7f1..3fa2040b8 100644 --- a/modules/client/events.cc +++ b/modules/client/events.cc @@ -194,7 +194,7 @@ get__events(client &client, ) }; - dock.wait_for(timeout, [&event, &eid] + dock.wait_for(timeout, [&event, &eid]() noexcept { return !empty(event) && !empty(eid); }); diff --git a/modules/client/profile.cc b/modules/client/profile.cc index 2064db004..536dfaff2 100644 --- a/modules/client/profile.cc +++ b/modules/client/profile.cc @@ -104,7 +104,7 @@ put__profile(client &client, bool modified{true}; profile.get(std::nothrow, param, [&value, &modified] - (const string_view ¶m, const string_view &existing) + (const string_view ¶m, const string_view &existing) noexcept { modified = existing != value; }); @@ -202,7 +202,7 @@ get__profile(client &client, const bool empty { profile.for_each([] - (const string_view &, const string_view &) + (const string_view &, const string_view &) noexcept { return false; }) diff --git a/modules/client/rooms/send.cc b/modules/client/rooms/send.cc index 6a5e36364..64efbce56 100644 --- a/modules/client/rooms/send.cc +++ b/modules/client/rooms/send.cc @@ -279,7 +279,7 @@ check_transaction_id(const m::user::id &user_id, { static const auto type_match { - [](const string_view &type) + [](const string_view &type) noexcept { return type == "ircd.client.txnid"; } diff --git a/modules/client/sync.cc b/modules/client/sync.cc index 0263296e8..5823b8db4 100644 --- a/modules/client/sync.cc +++ b/modules/client/sync.cc @@ -43,7 +43,9 @@ namespace ircd::m::sync::longpoll ircd::mapi::header IRCD_MODULE { - "Client 6.2.1 :Sync", nullptr, [] + "Client 6.2.1 :Sync", + nullptr, + []() noexcept { ircd::m::sync::longpoll::fini(); } @@ -635,7 +637,7 @@ catch(const std::exception &e) int ircd::m::sync::longpoll::poll(data &data) { - const auto ready{[&data] + const auto ready{[&data]() noexcept { assert(data.range.second <= m::vm::sequence::retired + 1); return data.range.second <= m::vm::sequence::retired; diff --git a/modules/console.cc b/modules/console.cc index 5c35c4598..ff6ee4f2f 100644 --- a/modules/console.cc +++ b/modules/console.cc @@ -574,7 +574,7 @@ console_cmd__restart(opt &out, const string_view &line) size_t swargs(0), posargs(0); ircd::tokens(line, ' ', [&swargs, &posargs] - (const auto &token) + (const string_view &token) { swargs += startswith(token, '-'); posargs += !startswith(token, '-'); @@ -1871,6 +1871,7 @@ console_cmd__ios__depth(opt &out, const string_view &line) { started = ios::epoch(); ios::dispatch(dispatch_desc, ios::yield, [&executed] + () noexcept { executed = ios::epoch(); }); @@ -1888,6 +1889,7 @@ console_cmd__ios__depth(opt &out, const string_view &line) { started = ios::epoch(); ios::dispatch(post_desc, ios::defer, ios::yield, [&executed] + () noexcept { executed = ios::epoch(); }); @@ -1905,6 +1907,7 @@ console_cmd__ios__depth(opt &out, const string_view &line) { started = ios::epoch(); ios::dispatch(defer_desc, ios::defer, ios::yield, [&executed] + () noexcept { executed = ios::epoch(); }); @@ -1980,6 +1983,7 @@ console_cmd__ios__latency(opt &out, const string_view &line) asm volatile ("lfence"); ios::dispatch(dispatch_desc, ios::yield, [&executed] + () noexcept { __sync_synchronize(); asm volatile ("lfence"); @@ -2010,6 +2014,7 @@ console_cmd__ios__latency(opt &out, const string_view &line) asm volatile ("lfence"); ios::dispatch(post_desc, ios::defer, ios::yield, [&executed] + () noexcept { __sync_synchronize(); asm volatile ("lfence"); @@ -2040,6 +2045,7 @@ console_cmd__ios__latency(opt &out, const string_view &line) asm volatile ("lfence"); ios::dispatch(defer_desc, ios::defer, ios::yield, [&executed] + () noexcept { __sync_synchronize(); asm volatile ("lfence"); @@ -4776,7 +4782,7 @@ console_cmd__db__sst__scan__count(opt &out, const string_view &line) db::database::sst::scan { database, path, [&out, &i] - (const auto &key, const auto &val) + (const auto &key, const auto &val) noexcept { ++i; return true; @@ -6359,7 +6365,7 @@ console_cmd__net__host(opt &out, const string_view &line) net::dns::resolve(hostport, opts, cbarr); const ctx::uninterruptible ui; - dock.wait([&done] + dock.wait([&done]() noexcept { return done; }); @@ -7787,7 +7793,7 @@ console_cmd__events__type__counts(opt &out, const string_view &line) { size_t i(0); m::events::type::for_each_in(type, [&i] - (const string_view &type, const m::event::idx &event_idx) + (const string_view &type, const m::event::idx &event_idx) noexcept { ++i; return true; @@ -10052,7 +10058,7 @@ console_cmd__room__members__origin(opt &out, const string_view &line) const bool same_origin { m::query(std::nothrow, event_idx, "origin", [&origin] - (const auto &_origin) + (const auto &_origin) noexcept { return _origin == origin; }) @@ -11572,6 +11578,7 @@ console_cmd__room__type__count(opt &out, const string_view &line) size_t ret(0); events.for_each([&ret] (const string_view &type, const uint64_t &depth, const m::event::idx &event_idx) + noexcept { ++ret; return true; @@ -12940,7 +12947,8 @@ console_cmd__user__read__count(opt &out, const string_view &line) size_t count {0}; space.for_each("ircd.read", room_id, [&out, &count] - (const auto &type, const auto &state_key, const auto &depth, const auto &event_idx) -> bool + (const auto &type, const auto &state_key, const auto &depth, const auto &event_idx) + noexcept -> bool { ++count; return true; diff --git a/modules/federation/make_join.cc b/modules/federation/make_join.cc index 7df1c54c8..05fba8a65 100644 --- a/modules/federation/make_join.cc +++ b/modules/federation/make_join.cc @@ -101,7 +101,7 @@ get__make_join(client &client, const bool version_mismatch { request.query.for_each("ver", [&room_version] - (const auto &val) + (const auto &val) noexcept { return val.second != room_version; }) diff --git a/modules/federation/send.cc b/modules/federation/send.cc index 5fd8009be..ef9a9109d 100644 --- a/modules/federation/send.cc +++ b/modules/federation/send.cc @@ -224,7 +224,7 @@ handle_put(client &client, size_t evals{0}; bool txn_in_progress{false}; m::vm::eval::for_each([&txn_id, &request, &evals, &txn_in_progress] - (const auto &eval) + (const auto &eval) noexcept { assert(eval.opts); const bool match_node diff --git a/modules/federation/sender.cc b/modules/federation/sender.cc index cf504cb6d..3ebb38425 100644 --- a/modules/federation/sender.cc +++ b/modules/federation/sender.cc @@ -180,7 +180,7 @@ send_worker() { while(1) try { - notified_dock.wait([] + notified_dock.wait([]() noexcept { return !notified_queue.empty(); }); @@ -503,7 +503,7 @@ recv_worker() { while(1) { - recv_action.wait([] + recv_action.wait([]() noexcept { return !txns.empty(); }); diff --git a/modules/federation/user_keys_claim.cc b/modules/federation/user_keys_claim.cc index ffda8f05c..ed3ac4198 100644 --- a/modules/federation/user_keys_claim.cc +++ b/modules/federation/user_keys_claim.cc @@ -84,7 +84,7 @@ post__user_keys_claim(client &client, const json::string &algorithm{algorithm_}; const json::string &device_id{device_id_}; const auto match{[&device_id] - (const string_view &state_key) + (const string_view &state_key) noexcept { return state_key == device_id; }}; diff --git a/modules/m_bridge.cc b/modules/m_bridge.cc index e1597d311..58f4a8a8e 100644 --- a/modules/m_bridge.cc +++ b/modules/m_bridge.cc @@ -211,7 +211,7 @@ try auto since {vm::sequence::retired}; do { - worker_dock.wait([&since] + worker_dock.wait([&since]() noexcept { return since < vm::sequence::retired; }); diff --git a/modules/m_command.cc b/modules/m_command.cc index 4443d7b3b..0d3a6ac9a 100644 --- a/modules/m_command.cc +++ b/modules/m_command.cc @@ -566,7 +566,7 @@ command__read(const mutable_buffer &buf, // return true if the expression is not matched for this room. const auto without_match{[&match] - (const string_view &key, const json::object &object) + (const string_view &key, const json::object &object) noexcept { return !match(key); }}; diff --git a/modules/m_listen.cc b/modules/m_listen.cc index 9d28d9647..dde83df20 100644 --- a/modules/m_listen.cc +++ b/modules/m_listen.cc @@ -241,12 +241,12 @@ _listener_allow { while(1) { - client::dock.wait([] + client::dock.wait([]() noexcept { return !client::pool.avail(); }); - client::dock.wait([] + client::dock.wait([]() noexcept { if(!client::pool.avail()) return false; diff --git a/modules/net_dns_cache.cc b/modules/net_dns_cache.cc index e32a3694c..454910b5c 100644 --- a/modules/net_dns_cache.cc +++ b/modules/net_dns_cache.cc @@ -65,7 +65,7 @@ ircd::net::dns::cache::fini() waiting.size(), }; - dock.wait([] + dock.wait([]() noexcept { return waiting.empty(); }); diff --git a/modules/web_hook.cc b/modules/web_hook.cc index 60b7d32bd..0141e2dd4 100644 --- a/modules/web_hook.cc +++ b/modules/web_hook.cc @@ -1419,7 +1419,7 @@ github_handle__status(std::ostream &out, static const auto type_match { - [](const string_view &type) + [](const string_view &type) noexcept { return type == "m.room.message"; } @@ -1427,7 +1427,7 @@ github_handle__status(std::ostream &out, const auto user_match { - [&_webhook_user](const string_view &sender) + [&_webhook_user](const string_view &sender) noexcept { return sender && sender == _webhook_user; }