From 600117cca0bbd02ccfb6c02547c93817036a2243 Mon Sep 17 00:00:00 2001 From: Marc Schink Date: Tue, 22 Aug 2017 21:07:39 +0200 Subject: [PATCH] discovery/tcp: Ignore already discovered devices Signed-off-by: Marc Schink --- libjaylink/discovery_tcp.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libjaylink/discovery_tcp.c b/libjaylink/discovery_tcp.c index 555e121..002fa67 100644 --- a/libjaylink/discovery_tcp.c +++ b/libjaylink/discovery_tcp.c @@ -96,12 +96,12 @@ static bool compare_devices(const void *a, const void *b) return true; } -static struct jaylink_device *find_device(const struct jaylink_context *ctx, +static struct jaylink_device *find_device(struct list *list, const struct jaylink_device *dev) { struct list *item; - item = list_find_custom(ctx->devs, &compare_devices, dev); + item = list_find_custom(list, &compare_devices, dev); if (item) return item->data; @@ -179,7 +179,14 @@ static struct jaylink_device *probe_device(struct jaylink_context *ctx, if (tmp.has_nickname) log_dbg(ctx, "Device: Nickname = %s.", tmp.nickname); - dev = find_device(ctx, &tmp); + dev = find_device(ctx->discovered_devs, &tmp); + + if (dev) { + log_dbg(ctx, "Ignoring already discovered device."); + return NULL; + } + + dev = find_device(ctx->devs, &tmp); if (dev) { log_dbg(ctx, "Using existing device instance."); -- 2.11.4.GIT