Ticket #319: 0001-Check-if-the-deamon-isn-t-already-running.patch

File 0001-Check-if-the-deamon-isn-t-already-running.patch, 2.4 KB (added by sjoerd, 3 years ago)
  • avahi-client/client.c

    From 55c732acd013b6ac979b6e1f5432a301481879ca Mon Sep 17 00:00:00 2001
    From: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
    Date: Sun, 15 Aug 2010 22:56:49 +0100
    Subject: [PATCH] Check if the deamon isn't already running
    
    ---
     avahi-client/client.c |   29 +++++++++++++++++++++++++----
     1 files changed, 25 insertions(+), 4 deletions(-)
    
    diff --git a/avahi-client/client.c b/avahi-client/client.c
    index be675ad..c7ece4a 100644
    a b  
    478478AvahiClient *avahi_client_new(const AvahiPoll *poll_api, AvahiClientFlags flags, AvahiClientCallback callback, void *userdata, int *ret_error) { 
    479479    AvahiClient *client = NULL; 
    480480    DBusError error; 
     481    int daemon_running = 0; 
    481482 
    482483    avahi_init_i18n(); 
    483484 
     
    560561    if (dbus_error_is_set(&error)) 
    561562        goto fail; 
    562563 
    563     if (!dbus_bus_start_service_by_name(client->bus, AVAHI_DBUS_NAME, 0, NULL, &error)) { 
    564564 
    565         /* We free the error so its not set, that way the fail target 
    566          * will return the NO_DAEMON error rather than a DBUS error */ 
     565    /* Check if the process already exists on the bus, otherwise try to start 
     566     * it. */ 
     567    if (!dbus_bus_name_has_owner (client->bus, AVAHI_DBUS_NAME, &error)) { 
     568      dbus_error_free(&error); 
     569      daemon_running = 0; 
     570    } else { 
     571      daemon_running = 1; 
     572    } 
     573 
     574    if (!daemon_running && 
     575        !dbus_bus_start_service_by_name(client->bus, 
     576          AVAHI_DBUS_NAME, 0, NULL, &error)) { 
    567577        dbus_error_free(&error); 
     578    } else { 
     579      daemon_running = 1; 
     580    } 
    568581 
     582    /* Re-check something else didn't start the daemon */ 
     583    if (!daemon_running && 
     584        !dbus_bus_name_has_owner (client->bus, AVAHI_DBUS_NAME, &error)) { 
     585      dbus_error_free(&error); 
     586    } else { 
     587      daemon_running = 1; 
     588    } 
     589 
     590    if (!daemon_running) { 
    569591        if (!(flags & AVAHI_CLIENT_NO_FAIL)) { 
    570592 
    571593            if (ret_error) 
     
    577599        /* The user doesn't want this call to fail if the daemon is not 
    578600         * available, so let's return succesfully */ 
    579601        client_set_state(client, AVAHI_CLIENT_CONNECTING); 
    580  
    581602    } else { 
    582603 
    583604        if (init_server(client, ret_error) < 0)