From 25818023c6449a0c3bec6a7afedb3765ccb8c2b0 Mon Sep 17 00:00:00 2001 From: Julien BLACHE Date: Wed, 18 Feb 2009 13:19:51 +0000 Subject: [PATCH] Fix handling of Avahi server restart. --- ChangeLog | 2 ++ frontend/saned.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b0483b0a9..4628f42b8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ 2009-02-18 Julien Blache * backend/net.c: do not lock the Avahi thread before stopping it. It looks like it's no longer necessary to do so. + * frontend/saned.c: fix handling of Avahi server restart so it + actually works. 2009-02-14 Chris Bagwell * configure.in, doc/Makefile.am, frontend/Makefile.am, diff --git a/frontend/saned.c b/frontend/saned.c index 9d05dee68..9602885e4 100644 --- a/frontend/saned.c +++ b/frontend/saned.c @@ -2519,26 +2519,35 @@ saned_avahi_callback (AvahiClient *c, AvahiClientState state, void *userdata) switch (state) { case AVAHI_CLIENT_CONNECTING: + DBG (DBG_INFO, "saned_avahi_callback: AVAHI_CLIENT_CONNECTING\n"); break; case AVAHI_CLIENT_S_RUNNING: + DBG (DBG_INFO, "saned_avahi_callback: AVAHI_CLIENT_S_RUNNING\n"); saned_create_avahi_services (c); break; case AVAHI_CLIENT_S_COLLISION: + DBG (DBG_INFO, "saned_avahi_callback: AVAHI_CLIENT_S_COLLISION\n"); + case AVAHI_CLIENT_S_REGISTERING: + DBG (DBG_INFO, "saned_avahi_callback: AVAHI_CLIENT_S_REGISTERING\n"); if (avahi_group) avahi_entry_group_reset (avahi_group); break; case AVAHI_CLIENT_FAILURE: - error = avahi_client_errno (c); + DBG (DBG_INFO, "saned_avahi_callback: AVAHI_CLIENT_FAILURE\n"); + error = avahi_client_errno (c); if (error == AVAHI_ERR_DISCONNECTED) { + DBG (DBG_INFO, "saned_avahi_callback: AVAHI_ERR_DISCONNECTED\n"); + /* Server disappeared - try to reconnect */ avahi_client_free (avahi_client); avahi_client = NULL; + avahi_group = NULL; avahi_client = avahi_client_new (avahi_simple_poll_get (avahi_poll), AVAHI_CLIENT_NO_FAIL, saned_avahi_callback, NULL, &error); if (avahi_client == NULL)