Skip to content

Commit 48e1442

Browse files
authored
[mDNS] Only consider fully qualified discovery results (#5348)
* [mDNS] only consider fully qualified results Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
1 parent 70144e3 commit 48e1442

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

bundles/org.openhab.core.config.discovery.mdns/src/main/java/org/openhab/core/config/discovery/mdns/internal/MDNSDiscoveryService.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,16 @@ public Set<ThingTypeUID> getSupportedThingTypes() {
190190

191191
@Override
192192
public void serviceAdded(@NonNullByDefault({}) ServiceEvent serviceEvent) {
193-
considerService(serviceEvent);
193+
/**
194+
* Do nothing when a service is added, as we will get a <code>serviceResolved</code> event afterwards,
195+
* which contains the fully resolved ServiceInfo. If we would already create a DiscoveryResult here,
196+
* we would not have the necessary full information.
197+
*/
194198
}
195199

196200
@Override
197201
public void serviceRemoved(@NonNullByDefault({}) ServiceEvent serviceEvent) {
202+
// note: {@link ServiceEvent} JavaDoc says getInfo() result can be null; but seems never to be so here.
198203
for (MDNSDiscoveryParticipant participant : participants) {
199204
if (participant.getServiceType().equals(serviceEvent.getType())) {
200205
removeDiscoveryResult(participant, serviceEvent.getInfo());
@@ -204,6 +209,7 @@ public void serviceRemoved(@NonNullByDefault({}) ServiceEvent serviceEvent) {
204209

205210
@Override
206211
public void serviceResolved(@NonNullByDefault({}) ServiceEvent serviceEvent) {
212+
// note: {@link ServiceEvent} JavaDoc says getInfo() result can be null; but seems never to be so here.
207213
considerService(serviceEvent);
208214
}
209215

itests/org.openhab.core.config.discovery.mdns.tests/src/main/java/org/openhab/core/config/discovery/mdns/internal/MDNSDiscoveryServiceOSGiTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ public void testThingDiscoveredAndRemoved() {
8181
mdnsDiscoveryService.addDiscoveryListener(mockDiscoveryListener);
8282

8383
mdnsDiscoveryService.serviceAdded(mockServiceEvent);
84-
verify(mockDiscoveryListener, timeout(2000).times(1)).thingDiscovered(mdnsDiscoveryService, discoveryResult);
84+
verify(mockDiscoveryListener, timeout(2000).times(0)).thingDiscovered(mdnsDiscoveryService, discoveryResult);
8585
verifyNoMoreInteractions(mockDiscoveryListener);
8686

8787
mdnsDiscoveryService.serviceResolved(mockServiceEvent);
88-
verify(mockDiscoveryListener, timeout(2000).times(2)).thingDiscovered(mdnsDiscoveryService, discoveryResult);
88+
verify(mockDiscoveryListener, timeout(2000).times(1)).thingDiscovered(mdnsDiscoveryService, discoveryResult);
8989
verifyNoMoreInteractions(mockDiscoveryListener);
9090

9191
mdnsDiscoveryService.serviceRemoved(mockServiceEvent);

0 commit comments

Comments
 (0)