diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2025-05-09 22:34:25 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2025-05-10 12:08:51 +0200 |
commit | 7ba17a016140f578bccca3ffd320c1663cf66c6c (patch) | |
tree | ac6404da3f3745c46c962547b2b56105802b8513 /xW/xW.cpp | |
parent | 4cf8c394b9b07d4bab2ea297edcfeb566af8e28f (diff) | |
download | xK-7ba17a016140f578bccca3ffd320c1663cf66c6c.tar.gz xK-7ba17a016140f578bccca3ffd320c1663cf66c6c.tar.xz xK-7ba17a016140f578bccca3ffd320c1663cf66c6c.zip |
Make the relay acknowledge all received commandsorigin/master
To that effect, bump liberty and the xC relay protocol version.
Relay events have been reordered to improve forward compatibility.
Also prevent use-after-free when serialization fails.
xP now slightly throttles activity notifications,
and indicates when there are unacknowledged commands.
Diffstat (limited to 'xW/xW.cpp')
-rw-r--r-- | xW/xW.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -222,6 +222,14 @@ relay_try_write(std::wstring &error) } static void +on_relay_generic_response( + std::wstring error, const Relay::ResponseData *response) +{ + if (!response) + show_error_message(error.c_str()); +} + +static void relay_send(Relay::CommandData *data, Callback callback = {}) { Relay::CommandMessage m = {}; @@ -232,6 +240,8 @@ relay_send(Relay::CommandData *data, Callback callback = {}) if (callback) g.command_callbacks[m.command_seq] = std::move(callback); + else + g.command_callbacks[m.command_seq] = on_relay_generic_response; uint32_t len = htonl(w.data.size()); uint8_t *prefix = reinterpret_cast<uint8_t *>(&len); |