Skip to content

Commit 25c2e26

Browse files
authored
[ntcore] Fix UID collisions between subscribers and multi-sub (#7198)
The changes in #7189 caused an ambiguity between multi-subscribers and normal subscribers, because the handle type no longer is sent to the network. Multi-subscribers now go to the network with negative UIDs, normal subscribers are positive UIDs. UID 0 is never used.
1 parent f1e032f commit 25c2e26

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

ntcore/src/main/native/cpp/LocalStorage.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ LocalStorage::SubscriberData* LocalStorage::Impl::AddLocalSubscriber(
621621
}
622622
if (m_network && !subscriber->config.hidden) {
623623
DEBUG4("-> NetworkSubscribe({})", topic->name);
624-
m_network->ClientSubscribe(Handle{subscriber->handle}.GetIndex(),
624+
m_network->ClientSubscribe(1 + Handle{subscriber->handle}.GetIndex(),
625625
{{topic->name}}, config);
626626
}
627627

@@ -650,7 +650,7 @@ LocalStorage::Impl::RemoveLocalSubscriber(NT_Subscriber subHandle) {
650650
}
651651
}
652652
if (m_network && !subscriber->config.hidden) {
653-
m_network->ClientUnsubscribe(Handle{subscriber->handle}.GetIndex());
653+
m_network->ClientUnsubscribe(1 + Handle{subscriber->handle}.GetIndex());
654654
}
655655
}
656656
return subscriber;
@@ -687,7 +687,7 @@ LocalStorage::MultiSubscriberData* LocalStorage::Impl::AddMultiSubscriber(
687687
}
688688
if (m_network && !subscriber->options.hidden) {
689689
DEBUG4("-> NetworkSubscribe");
690-
m_network->ClientSubscribe(Handle{subscriber->handle}.GetIndex(),
690+
m_network->ClientSubscribe(-1 - Handle{subscriber->handle}.GetIndex(),
691691
subscriber->prefixes, subscriber->options);
692692
}
693693
return subscriber;
@@ -706,7 +706,7 @@ LocalStorage::Impl::RemoveMultiSubscriber(NT_MultiSubscriber subHandle) {
706706
}
707707
}
708708
if (m_network && !subscriber->options.hidden) {
709-
m_network->ClientUnsubscribe(Handle{subscriber->handle}.GetIndex());
709+
m_network->ClientUnsubscribe(-1 - Handle{subscriber->handle}.GetIndex());
710710
}
711711
}
712712
return subscriber;
@@ -1141,13 +1141,13 @@ void LocalStorage::Impl::StartNetwork(net::ClientMessageHandler* network) {
11411141
}
11421142
for (auto&& subscriber : m_subscribers) {
11431143
if (!subscriber->config.hidden) {
1144-
network->ClientSubscribe(Handle{subscriber->handle}.GetIndex(),
1144+
network->ClientSubscribe(1 + Handle{subscriber->handle}.GetIndex(),
11451145
{{subscriber->topic->name}}, subscriber->config);
11461146
}
11471147
}
11481148
for (auto&& subscriber : m_multiSubscribers) {
11491149
if (!subscriber->options.hidden) {
1150-
network->ClientSubscribe(Handle{subscriber->handle}.GetIndex(),
1150+
network->ClientSubscribe(-1 - Handle{subscriber->handle}.GetIndex(),
11511151
subscriber->prefixes, subscriber->options);
11521152
}
11531153
}

0 commit comments

Comments
 (0)