From f4ebed11ff59e7cca3ceced373e6f008959f669f Mon Sep 17 00:00:00 2001
From: matveyev <yury.matveev@desy.de>
Date: Mon, 11 Aug 2025 16:23:38 +0200
Subject: [PATCH 1/2] EventConsumerKeepAliveThread: send actual IDL when
 execute ZmqEventSubscriptionChange

When we executed ZmqEventSubscriptionChange we sent as client IDL 0, which means for the server, "Guess my IDL", as it was introduced in 01ffb8f4.

After IDL6 release, due to IDL6 devices subscribing to ...idl5_... events, they were re-subscribed as IDL5 devices.

Now we send the actual maximum IDL, supported by the client as we do at the subscription process
---
 src/client/eventkeepalive.cpp | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/lib/cpp/src/client/eventkeepalive.cpp b/lib/cpp/src/client/eventkeepalive.cpp
index 487cdddd3..824adb2e3 100644
--- a/lib/cpp/src/client/eventkeepalive.cpp
+++ b/lib/cpp/src/client/eventkeepalive.cpp
@@ -200,7 +200,11 @@ bool EventConsumerKeepAliveThread::reconnect_to_zmq_channel(const EvChanIte &ipo
                     subscriber_info.push_back(epos->second.obj_name);
                     subscriber_info.emplace_back("subscribe");
                     subscriber_info.push_back(epos->second.event_name);
-                    subscriber_info.emplace_back("0");
+
+                    // maximum IDL version which client supports
+                    std::stringstream ss;
+                    ss << DevVersion;
+                    subscriber_info.push_back(ss.str());
 
                     subscriber_in << subscriber_info;
 
@@ -1039,7 +1043,12 @@ void EventConsumerKeepAliveThread::confirm_subscription(ZmqEventConsumer *event_
                     subscriber_info.push_back(cmd_params[(loop * 3) + 1]);
                     subscriber_info.emplace_back("subscribe");
                     subscriber_info.push_back(cmd_params[(loop * 3) + 2]);
-                    subscriber_info.emplace_back("0");
+
+                    // maximum IDL version which client supports
+                    std::stringstream ss;
+                    ss << DevVersion;
+                    subscriber_info.push_back(ss.str());
+
                     subscriber_in << subscriber_info;
 
                     try
@@ -1470,7 +1479,10 @@ void EventConsumerKeepAliveThread::re_subscribe_after_reconnect(
     subscriber_info.push_back(epos->second.event_name);
     if(ipos->second.channel_type == ZMQ)
     {
-        subscriber_info.emplace_back("0");
+        // maximum IDL version which client supports
+        std::stringstream ss;
+        ss << DevVersion;
+        subscriber_info.push_back(ss.str());
     }
     subscriber_in << subscriber_info;
 
-- 
2.39.5

