Home | History | Annotate | Download | only in patches
      1  18960  padraig --- /usr/tmp/clean/avahi-0.6.25/avahi-daemon/main.c	2008-12-12 21:36:15.000000000 +0000
      2  18960  padraig +++ avahi-0.6.25/avahi-daemon/main.c	2009-08-04 08:17:02.469032000 +0100
      3  18960  padraig @@ -75,7 +75,9 @@
      4  11510  padraig  
      5  11510  padraig  #include "setproctitle.h"
      6  11510  padraig  #include "main.h"
      7  11510  padraig +#ifndef HAVE_BONJOUR
      8  11510  padraig  #include "simple-protocol.h"
      9  11510  padraig +#endif
     10  11510  padraig  #include "static-services.h"
     11  11510  padraig  #include "static-hosts.h"
     12  11510  padraig  #include "ini-file-parser.h"
     13  18960  padraig @@ -132,11 +134,13 @@
     14  11510  padraig  #define RESOLV_CONF "/etc/resolv.conf"
     15  11855  padraig  #define BROWSE_DOMAINS_MAX 16
     16  11510  padraig  
     17  11510  padraig +#ifndef HAVE_BONJOUR
     18  11510  padraig  static AvahiSEntryGroup *dns_servers_entry_group = NULL;
     19  11510  padraig  static AvahiSEntryGroup *resolv_conf_entry_group = NULL;
     20  11510  padraig  
     21  11855  padraig  static char **resolv_conf_name_servers = NULL;
     22  11855  padraig  static char **resolv_conf_search_domains = NULL;
     23  11510  padraig +#endif
     24  11510  padraig  
     25  11510  padraig  static DaemonConfig config;
     26  11510  padraig  
     27  18960  padraig @@ -148,6 +152,7 @@
     28  11510  padraig      return strlen(s) >= l && strncmp(s, prefix, l) == 0;
     29  11510  padraig  }
     30  11510  padraig  
     31  11510  padraig +#ifndef HAVE_BONJOUR
     32  11510  padraig  static int load_resolv_conf(void) {
     33  11510  padraig      int ret = -1;
     34  11510  padraig      FILE *f;
     35  18960  padraig @@ -331,6 +336,7 @@
     36  18960  padraig  
     37  11855  padraig      avahi_server_set_browse_domains(avahi_server, l);
     38  11510  padraig  }
     39  11510  padraig +#endif
     40  11510  padraig  
     41  11510  padraig  static void server_callback(AvahiServer *s, AvahiServerState state, void *userdata) {
     42  11510  padraig      DaemonConfig *c = userdata;
     43  18960  padraig @@ -356,7 +362,7 @@
     44  18960  padraig  
     45  11510  padraig              static_service_add_to_server();
     46  11510  padraig              static_hosts_add_to_server();
     47  18960  padraig -
     48  11510  padraig +#ifndef HAVE_BONJOUR
     49  11510  padraig              remove_dns_server_entry_groups();
     50  18960  padraig  
     51  11855  padraig              if (c->publish_resolv_conf && resolv_conf_name_servers && resolv_conf_name_servers[0])
     52  18960  padraig @@ -366,6 +372,7 @@
     53  11510  padraig                  dns_servers_entry_group = add_dns_servers(s, dns_servers_entry_group, c->publish_dns_servers);
     54  18960  padraig  
     55  11510  padraig              simple_protocol_restart_queries();
     56  11510  padraig +#endif
     57  11510  padraig              break;
     58  18960  padraig  
     59  11510  padraig          case AVAHI_SERVER_COLLISION: {
     60  18960  padraig @@ -375,7 +382,9 @@
     61  18960  padraig  
     62  11510  padraig              static_service_remove_from_server();
     63  11510  padraig              static_hosts_remove_from_server();
     64  11510  padraig +#ifndef HAVE_BONJOUR
     65  11510  padraig              remove_dns_server_entry_groups();
     66  11510  padraig +#endif
     67  11510  padraig  
     68  11510  padraig              n = avahi_alternative_host_name(avahi_server_get_host_name(s));
     69  11510  padraig              avahi_log_warn("Host name conflict, retrying with <%s>", n);
     70  18960  padraig @@ -397,7 +406,9 @@
     71  18960  padraig  
     72  11510  padraig              static_service_remove_from_server();
     73  11510  padraig              static_hosts_remove_from_server();
     74  11510  padraig +#ifndef HAVE_BONJOUR
     75  11510  padraig              remove_dns_server_entry_groups();
     76  11510  padraig +#endif
     77  18960  padraig  
     78  11510  padraig              break;
     79  11510  padraig  
     80  18960  padraig @@ -417,9 +428,11 @@
     81  11510  padraig              "    -r --reload        Request a running daemon to reload static services\n"
     82  11510  padraig              "    -c --check         Return 0 if a daemon is already running\n"
     83  11510  padraig              "    -V --version       Show version\n"
     84  11510  padraig +#ifndef HAVE_BONJOUR
     85  11510  padraig              "    -f --file=FILE     Load the specified configuration file instead of\n"
     86  11510  padraig              "                       "AVAHI_CONFIG_FILE"\n"
     87  11510  padraig              "       --no-rlimits    Don't enforce resource limits\n"
     88  11510  padraig +#endif
     89  11510  padraig              "       --no-drop-root  Don't drop privileges\n"
     90  18960  padraig  #ifdef ENABLE_CHROOT
     91  11510  padraig              "       --no-chroot     Don't chroot()\n"
     92  18960  padraig @@ -448,11 +461,15 @@
     93  11510  padraig          { "daemonize",      no_argument,       NULL, 'D' },
     94  11510  padraig          { "kill",           no_argument,       NULL, 'k' },
     95  11510  padraig          { "version",        no_argument,       NULL, 'V' },
     96  11510  padraig +#ifndef HAVE_BONJOUR
     97  11510  padraig          { "file",           required_argument, NULL, 'f' },
     98  11510  padraig +#endif
     99  11510  padraig          { "reload",         no_argument,       NULL, 'r' },
    100  11510  padraig          { "check",          no_argument,       NULL, 'c' },
    101  11510  padraig          { "syslog",         no_argument,       NULL, 's' },
    102  11510  padraig +#ifndef HAVE_BONJOUR
    103  11510  padraig          { "no-rlimits",     no_argument,       NULL, OPTION_NO_RLIMITS },
    104  11510  padraig +#endif
    105  11510  padraig          { "no-drop-root",   no_argument,       NULL, OPTION_NO_DROP_ROOT },
    106  11510  padraig  #ifdef ENABLE_CHROOT
    107  11510  padraig          { "no-chroot",      no_argument,       NULL, OPTION_NO_CHROOT },
    108  18960  padraig @@ -464,7 +481,11 @@
    109  11510  padraig  
    110  11510  padraig      assert(c);
    111  11510  padraig  
    112  11510  padraig +#ifdef HAVE_BONJOUR
    113  11510  padraig +    while ((o = getopt_long(argc, argv, "hDkVrcs", long_options, NULL)) >= 0) {
    114  11510  padraig +#else
    115  11510  padraig      while ((o = getopt_long(argc, argv, "hDkVf:rcs", long_options, NULL)) >= 0) {
    116  11510  padraig +#endif
    117  11510  padraig  
    118  11510  padraig          switch(o) {
    119  11510  padraig              case 's':
    120  18960  padraig @@ -482,6 +503,7 @@
    121  11510  padraig              case 'V':
    122  11510  padraig                  c->command = DAEMON_VERSION;
    123  11510  padraig                  break;
    124  11510  padraig +#ifndef HAVE_BONJOUR
    125  11510  padraig              case 'f':
    126  11510  padraig                  avahi_free(c->config_file);
    127  11510  padraig                  c->config_file = avahi_strdup(optarg);
    128  18960  padraig @@ -489,12 +511,15 @@
    129  11510  padraig              case 'r':
    130  11510  padraig                  c->command = DAEMON_RELOAD;
    131  11510  padraig                  break;
    132  11510  padraig +#endif
    133  11510  padraig              case 'c':
    134  11510  padraig                  c->command = DAEMON_CHECK;
    135  11510  padraig                  break;
    136  11510  padraig +#ifndef HAVE_BONJOUR
    137  11510  padraig              case OPTION_NO_RLIMITS:
    138  11510  padraig                  c->set_rlimits = 0;
    139  11510  padraig                  break;
    140  11510  padraig +#endif
    141  11510  padraig              case OPTION_NO_DROP_ROOT:
    142  11510  padraig                  c->drop_root = 0;
    143  11510  padraig                  break;
    144  18960  padraig @@ -528,6 +553,7 @@
    145  11510  padraig      return *s == 'y' || *s == 'Y' || *s == '1' || *s == 't' || *s == 'T';
    146  11510  padraig  }
    147  11510  padraig  
    148  14317  padraig +#ifndef HAVE_BONJOUR
    149  11510  padraig  static int load_config_file(DaemonConfig *c) {
    150  11510  padraig      int r = -1;
    151  11510  padraig      AvahiIniFile *f;
    152  18960  padraig @@ -739,6 +765,7 @@
    153  18960  padraig  
    154  11510  padraig      return r;
    155  11510  padraig  }
    156  11510  padraig +#endif
    157  11510  padraig  
    158  11510  padraig  static void log_function(AvahiLogLevel level, const char *txt) {
    159  11510  padraig  
    160  18960  padraig @@ -859,6 +886,7 @@
    161  11510  padraig      static_service_add_to_server();
    162  11510  padraig      static_hosts_add_to_server();
    163  18960  padraig  
    164  11510  padraig +#ifndef HAVE_BONJOUR
    165  11510  padraig      if (resolv_conf_entry_group)
    166  11510  padraig          avahi_s_entry_group_reset(resolv_conf_entry_group);
    167  18960  padraig  
    168  18960  padraig @@ -869,6 +897,7 @@
    169  18960  padraig  
    170  11855  padraig      if (config.publish_resolv_conf && resolv_conf_name_servers && resolv_conf_name_servers[0])
    171  11855  padraig          resolv_conf_entry_group = add_dns_servers(avahi_server, resolv_conf_entry_group, resolv_conf_name_servers);
    172  11510  padraig +#endif
    173  11510  padraig  }
    174  11510  padraig  
    175  11510  padraig  #ifdef HAVE_INOTIFY
    176  18960  padraig @@ -956,8 +985,12 @@
    177  11510  padraig              break;
    178  11510  padraig  
    179  11510  padraig          case SIGUSR1:
    180  11510  padraig +#ifdef HAVE_BONJOUR
    181  11510  padraig +            avahi_log_info("Got SIGUSR1, ignoring recor.");
    182  11510  padraig +#else
    183  11510  padraig              avahi_log_info("Got SIGUSR1, dumping record data.");
    184  11510  padraig              avahi_server_dump(avahi_server, dump, NULL);
    185  11510  padraig +#endif
    186  11510  padraig              break;
    187  11510  padraig  
    188  11510  padraig          default:
    189  18960  padraig @@ -985,8 +1018,10 @@
    190  11510  padraig  
    191  11510  padraig      assert(c);
    192  11510  padraig  
    193  11510  padraig +#ifndef HAVE_BONJOUR
    194  11510  padraig      if (!(nss_support = avahi_nss_support()))
    195  11510  padraig          avahi_log_warn("WARNING: No NSS support for mDNS detected, consider installing nss-mdns!");
    196  11510  padraig +#endif
    197  11510  padraig  
    198  11510  padraig      if (!(simple_poll_api = avahi_simple_poll_new())) {
    199  11510  padraig          avahi_log_error("Failed to create main loop object.");
    200  18960  padraig @@ -1005,8 +1040,10 @@
    201  11510  padraig          goto finish;
    202  11510  padraig      }
    203  11510  padraig  
    204  11510  padraig +#ifndef HAVE_BONJOUR
    205  11510  padraig      if (simple_protocol_setup(poll_api) < 0)
    206  11510  padraig          goto finish;
    207  11510  padraig +#endif
    208  11510  padraig  
    209  11510  padraig  #ifdef HAVE_DBUS
    210  11510  padraig      if (c->enable_dbus) {
    211  18960  padraig @@ -1070,7 +1107,9 @@
    212  11510  padraig      }
    213  11510  padraig  #endif
    214  11510  padraig  
    215  11510  padraig +#ifndef HAVE_BONJOUR
    216  11510  padraig      load_resolv_conf();
    217  11510  padraig +#endif
    218  11510  padraig  #ifdef ENABLE_CHROOT
    219  11510  padraig      static_service_load(config.use_chroot);
    220  11510  padraig      static_hosts_load(config.use_chroot);
    221  18960  padraig @@ -1084,8 +1123,10 @@
    222  11510  padraig          goto finish;
    223  11510  padraig      }
    224  11510  padraig  
    225  11510  padraig +#ifndef HAVE_BONJOUR
    226  11510  padraig      update_wide_area_servers();
    227  11855  padraig      update_browse_domains();
    228  11510  padraig +#endif
    229  11510  padraig  
    230  11510  padraig      if (c->daemonize) {
    231  11510  padraig          daemon_retval_send(0);
    232  18960  padraig @@ -1114,10 +1155,12 @@
    233  18960  padraig  
    234  11510  padraig      static_hosts_remove_from_server();
    235  11510  padraig      static_hosts_free_all();
    236  18960  padraig +#ifndef HAVE_BONJOUR
    237  11510  padraig  
    238  11510  padraig      remove_dns_server_entry_groups();
    239  18960  padraig  
    240  11510  padraig      simple_protocol_shutdown();
    241  11510  padraig +#endif
    242  11510  padraig  
    243  11510  padraig  #ifdef HAVE_DBUS
    244  11510  padraig      if (c->enable_dbus)
    245  18960  padraig @@ -1428,8 +1471,10 @@
    246  11510  padraig              goto finish;
    247  11510  padraig          }
    248  11510  padraig  
    249  11510  padraig +#ifndef HAVE_BONJOUR
    250  11510  padraig          if (load_config_file(&config) < 0)
    251  11510  padraig              goto finish;
    252  11510  padraig +#endif
    253  18960  padraig  
    254  11510  padraig          if (config.daemonize) {
    255  11510  padraig              daemon_retval_init();
    256  18960  padraig @@ -1516,9 +1561,13 @@
    257  11510  padraig  
    258  11510  padraig      avahi_server_config_free(&config.server_config);
    259  11510  padraig      avahi_free(config.config_file);
    260  11510  padraig +#ifdef HAVE_BONJOUR
    261  11855  padraig +    assert(config.publish_dns_servers == NULL);
    262  11510  padraig +#else
    263  11510  padraig      avahi_strfreev(config.publish_dns_servers);
    264  11855  padraig      avahi_strfreev(resolv_conf_name_servers);
    265  11855  padraig      avahi_strfreev(resolv_conf_search_domains);
    266  11510  padraig +#endif
    267  11510  padraig  
    268  11510  padraig      if (wrote_pid_file) {
    269  11510  padraig  #ifdef ENABLE_CHROOT
    270