0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-16 17:08:20 +02:00

ircd:Ⓜ️:event: Eliminate several small thread-local buffers; simplify.

This commit is contained in:
Jason Volk 2020-09-28 21:32:32 -07:00
parent bd641e76ad
commit 1b390bdd17

View file

@ -168,8 +168,12 @@ ircd::json::object
ircd::m::make_hashes(const mutable_buffer &out, ircd::m::make_hashes(const mutable_buffer &out,
const sha256::buf &hash) const sha256::buf &hash)
{ {
static const auto b64bufsz(b64::encode_size(sizeof(hash))); static const auto b64bufsz
thread_local char hashb64buf[b64bufsz]; {
b64::encode_size(sizeof(hash))
};
char hashb64buf[b64bufsz];
const json::members hashes const json::members hashes
{ {
{ "sha256", b64::encode_unpadded(hashb64buf, hash) } { "sha256", b64::encode_unpadded(hashb64buf, hash) }
@ -250,14 +254,20 @@ try
object.at("sha256") object.at("sha256")
}; };
thread_local char buf[32]; char buf[32];
const auto claim const auto claim
{ {
b64::decode(buf, hash) b64::decode(buf, hash)
}; };
static_assert(sizeof(buf) == sizeof(actual)); static_assert(sizeof(buf) == sizeof(actual));
return memcmp(buf, ircd::data(actual), sizeof(buf)) == 0; if(unlikely(ircd::size(claim) != sizeof(actual)))
return false;
if(memcmp(buf, ircd::data(actual), sizeof(buf)) != 0)
return false;
return true;
} }
catch(const json::not_found &) catch(const json::not_found &)
{ {
@ -284,7 +294,7 @@ ircd::m::event::signatures(const mutable_buffer &out,
m::public_key_id(m::my(origin)) m::public_key_id(m::my(origin))
}; };
thread_local char sigb64buf[b64::encode_size(sizeof(sig))]; char sigb64buf[b64::encode_size(sizeof(sig))];
const json::members sigb64 const json::members sigb64
{ {
{ public_key_id, b64::encode_unpadded(sigb64buf, sig) } { public_key_id, b64::encode_unpadded(sigb64buf, sig) }
@ -347,7 +357,7 @@ ircd::m::signatures(const mutable_buffer &out_,
b64::encode_size(sizeof(my_sig)) b64::encode_size(sizeof(my_sig))
}; };
thread_local char sigb64buf[sigb64bufsz]; char sigb64buf[sigb64bufsz];
const json::member my_sig_member const json::member my_sig_member
{ {
origin, json::members origin, json::members