From 7ba17a016140f578bccca3ffd320c1663cf66c6c Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch
Date: Fri, 9 May 2025 22:34:25 +0200
Subject: Make the relay acknowledge all received commands
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.
---
xW/xW.cpp | 10 ++++++++++
1 file changed, 10 insertions(+)
(limited to 'xW')
diff --git a/xW/xW.cpp b/xW/xW.cpp
index 7fd8950..0840c16 100644
--- a/xW/xW.cpp
+++ b/xW/xW.cpp
@@ -221,6 +221,14 @@ relay_try_write(std::wstring &error)
return true;
}
+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 = {})
{
@@ -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