diff --git a/src/modules/discovery/discovery.c b/src/modules/discovery/discovery.c index 787dea8..1b0170d 100644 --- a/src/modules/discovery/discovery.c +++ b/src/modules/discovery/discovery.c @@ -233,11 +233,13 @@ static void *receive_thread_fn(void *arg) { pthread_mutex_unlock(&d->peers_mutex); - /* respond to every announcement — the sender may be a fresh instance - * that doesn't know about us yet even if we already have it in our table */ - pthread_mutex_lock(&d->announce_mutex); - pthread_cond_signal(&d->announce_cond); - pthread_mutex_unlock(&d->announce_mutex); + if (is_new) { + /* announce ourselves immediately so the new peer learns about us + * without waiting up to interval_ms */ + pthread_mutex_lock(&d->announce_mutex); + pthread_cond_signal(&d->announce_cond); + pthread_mutex_unlock(&d->announce_mutex); + } if (is_new && d->config.on_peer_found) { d->config.on_peer_found(&peer_copy, d->config.userdata);