2011-01-21 Padraig O'Briain <[email protected]> gnome-2-30
authorpadraig
Fri, 21 Jan 2011 14:18:17 +0000
branchgnome-2-30
changeset 21365 ead32bf37db7
parent 21364 f10302b3bb6f
child 21366 c7a3763f4356
2011-01-21 Padraig O'Briain <[email protected]> * base-specs/avahi.spec: * patches/avahi-01-config-bonjour.diff: * patches/avahi-02-browse-service.diff: * patches/avahi-03-entry.diff: * patches/avahi-04-internal.diff: * patches/avahi-05-resolve-service.diff: * patches/avahi-06-server.diff: * patches/avahi-07-daemon.diff: * patches/avahi-08-man-page.diff: * patches/avahi-09-resolve-host-name.diff: * patches/avahi-10-resolve-address.diff: * patches/avahi-11-browse-domain.diff: * patches/avahi-12-browse.diff: * patches/avahi-13-remove-debug-trap.diff: * patches/avahi-15-secure-dbus-dest.diff: * specs/SUNWavahi-bridge-dsd.spec: Update to version 0.6.28; fixes bugster 7008368.
ChangeLog
base-specs/avahi.spec
patches/avahi-01-config-bonjour.diff
patches/avahi-02-browse-service.diff
patches/avahi-03-entry.diff
patches/avahi-04-internal.diff
patches/avahi-05-resolve-service.diff
patches/avahi-06-server.diff
patches/avahi-07-daemon.diff
patches/avahi-08-man-page.diff
patches/avahi-09-resolve-host-name.diff
patches/avahi-10-resolve-address.diff
patches/avahi-11-browse-domain.diff
patches/avahi-12-browse.diff
patches/avahi-13-remove-debug-trap.diff
patches/avahi-15-secure-dbus-dest.diff
specs/SUNWavahi-bridge-dsd.spec
--- a/ChangeLog	Fri Jan 21 09:04:27 2011 +0000
+++ b/ChangeLog	Fri Jan 21 14:18:17 2011 +0000
@@ -1,3 +1,23 @@
+2011-01-21  Padraig O'Briain  <[email protected]>
+
+	* base-specs/avahi.spec:
+	* patches/avahi-01-config-bonjour.diff:
+	* patches/avahi-02-browse-service.diff:
+	* patches/avahi-03-entry.diff:
+	* patches/avahi-04-internal.diff:
+	* patches/avahi-05-resolve-service.diff:
+	* patches/avahi-06-server.diff:
+	* patches/avahi-07-daemon.diff:
+	* patches/avahi-08-man-page.diff:
+	* patches/avahi-09-resolve-host-name.diff:
+	* patches/avahi-10-resolve-address.diff:
+	* patches/avahi-11-browse-domain.diff:
+	* patches/avahi-12-browse.diff:
+	* patches/avahi-13-remove-debug-trap.diff:
+	* patches/avahi-15-secure-dbus-dest.diff:
+	* specs/SUNWavahi-bridge-dsd.spec: Update to version 0.6.28; fixes
+	bugster 7008368.
+
 2011-01-21  Simon Jin  <[email protected]>
 
 	* base-specs/libgweather.spec:update license
--- a/base-specs/avahi.spec	Fri Jan 21 09:04:27 2011 +0000
+++ b/base-specs/avahi.spec	Fri Jan 21 14:18:17 2011 +0000
@@ -11,7 +11,7 @@
 Name:         avahi
 License:      LGPL v2
 Group:        System/Libraries
-Version:      0.6.25
+Version:      0.6.28
 Release:      1
 Distribution: Java Desktop System
 Vendor:       Avahi
@@ -122,6 +122,7 @@
           --localstatedir=%{_localstatedir} \
           --mandir=%{_mandir} 		\
           --with-distro=none		\
+          --disable-gtk3		\
           --disable-qt3			\
           --disable-qt4			\
           --disable-mono		\
@@ -170,6 +171,7 @@
 rm -rf $RPM_BUILD_ROOT%{_mandir}/man5
 rm -rf $RPM_BUILD_ROOT%{_mandir}/man8
 rm -rf $RPM_BUILD_ROOT%{_mandir}/man1/avahi-bookmarks.1
+rm -rf $RPM_BUILD_ROOT%{_datadir}/dbus-1/system-services
 
 
 %post
@@ -179,6 +181,8 @@
 /sbin/ldconfig
 
 %changelog
+* Fri Jan 21 2011 - [email protected]
+- Update to 0.6.28.
 * Wed Nov 10 2010 - [email protected]
 - Add license tag.
 * Mon oct 05 2009 - [email protected]
--- a/patches/avahi-01-config-bonjour.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-01-config-bonjour.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,24 @@
---- /usr/tmp/clean/avahi-0.6.22/configure.ac	2007-12-17 15:35:51.000000000 +0000
-+++ avahi-0.6.22/configure.ac	2008-06-06 08:54:18.794453000 +0100
-@@ -148,6 +148,17 @@
+--- /usr/tmp/clean/avahi-0.6.28/configure.ac	2010-10-05 00:33:15.689579806 +0100
++++ avahi-0.6.28/configure.ac	2011-01-21 09:13:07.100772101 +0000
+@@ -23,7 +23,7 @@
+ AC_CONFIG_SRCDIR([avahi-core/server.c])
+ AC_CONFIG_MACRO_DIR([common])
+ AC_CONFIG_HEADERS([config.h])
+-AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability silent-rules tar-pax])
++AM_INIT_AUTOMAKE([foreign 1.10 -Wall -Wno-portability tar-pax])
+ 
+ AC_SUBST(PACKAGE_URL, [http://avahi.org/])
+ 
+@@ -43,7 +43,7 @@
+ 
+ AC_CANONICAL_HOST
+ 
+-AM_SILENT_RULES([yes])
++#AM_SILENT_RULES([yes])
+ 
+ AC_CHECK_PROG([STOW], [stow], [yes], [no])
+ 
+@@ -153,6 +153,17 @@
  ACX_PTHREAD(,AC_MSG_ERROR([Missing POSIX Threads support]))
  
  #
--- a/patches/avahi-02-browse-service.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-02-browse-service.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.21/avahi-core/browse-service.c	2006-08-31 18:18:03.000000000 +0100
-+++ avahi-0.6.21/avahi-core/browse-service.c	2007-09-20 10:19:21.368616000 +0100
-@@ -23,10 +23,14 @@
+--- avahi-0.6.28/avahi-core/browse-service.c.orig	2010-08-26 01:51:38.983153000 +0100
++++ avahi-0.6.28/avahi-core/browse-service.c	2011-01-20 09:22:41.808471289 +0000
+@@ -21,10 +21,14 @@
  #include <config.h>
  #endif
  
@@ -15,7 +15,7 @@
  #include <avahi-common/error.h>
  
  #include "browse.h"
-@@ -42,9 +46,131 @@
+@@ -40,9 +44,131 @@
      AvahiSServiceBrowserCallback callback;
      void* userdata;
  
@@ -147,7 +147,7 @@
  static void record_browser_callback(
      AvahiSRecordBrowser*rr,
      AvahiIfIndex interface,
-@@ -104,7 +230,11 @@
+@@ -102,7 +228,11 @@
      AVAHI_CHECK_VALIDITY_RETURN_NULL(server, AVAHI_IF_VALID(interface), AVAHI_ERR_INVALID_INTERFACE);
      AVAHI_CHECK_VALIDITY_RETURN_NULL(server, AVAHI_PROTO_VALID(protocol), AVAHI_ERR_INVALID_PROTOCOL);
      AVAHI_CHECK_VALIDITY_RETURN_NULL(server, !domain || avahi_is_valid_domain_name(domain), AVAHI_ERR_INVALID_DOMAIN_NAME);
@@ -159,10 +159,10 @@
      AVAHI_CHECK_VALIDITY_RETURN_NULL(server, avahi_is_valid_service_type_generic(service_type), AVAHI_ERR_INVALID_SERVICE_TYPE);
  
      if (!domain)
-@@ -134,6 +264,16 @@
+@@ -132,6 +262,16 @@
          goto fail;
      }
-     
+ 
 +#ifdef HAVE_BONJOUR
 +    b->protocol = protocol;
 +    b->interface = interface;
@@ -176,7 +176,7 @@
      if (!(k = avahi_key_new(n, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_PTR))) {
          avahi_server_set_errno(server, AVAHI_ERR_NO_MEMORY);
          goto fail;
-@@ -143,6 +283,7 @@
+@@ -141,6 +281,7 @@
          goto fail;
  
      avahi_key_unref(k);
@@ -184,8 +184,8 @@
  
      return b;
  
-@@ -165,5 +306,21 @@
-     
+@@ -163,5 +304,21 @@
+ 
      avahi_free(b->domain_name);
      avahi_free(b->service_type);
 +#ifdef HAVE_BONJOUR
--- a/patches/avahi-03-entry.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-03-entry.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.12/avahi-core/entry.c	2006-03-02 01:30:17.000000000 +0000
-+++ avahi-0.6.12/avahi-core/entry.c	2006-08-28 14:26:37.958555000 +0100
-@@ -52,6 +52,33 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/entry.c	2010-08-26 01:51:38.985153000 +0100
++++ avahi-0.6.28/avahi-core/entry.c	2011-01-20 12:01:24.322248863 +0000
+@@ -50,6 +50,33 @@
  #include "rr-util.h"
  #include "domain-util.h"
  
@@ -34,7 +34,7 @@
  static void transport_flags_from_domain(AvahiServer *s, AvahiPublishFlags *flags, const char *domain) {
      assert(flags);
      assert(domain);
-@@ -71,13 +98,146 @@
+@@ -69,13 +96,146 @@
          *flags |= AVAHI_PUBLISH_USE_WIDE_AREA;
  }
  
@@ -181,7 +181,7 @@
  
      /* Remove from linked list */
      AVAHI_LLIST_REMOVE(AvahiEntry, entries, s->entries, e);
-@@ -104,6 +264,15 @@
+@@ -102,6 +262,15 @@
  
      while (g->entries)
          avahi_entry_free(s, g->entries);
@@ -197,17 +197,17 @@
  
      if (g->register_time_event)
          avahi_time_event_free(g->register_time_event);
-@@ -141,6 +310,21 @@
+@@ -139,6 +308,21 @@
          s->need_entry_cleanup = 0;
      }
  
 +#ifdef HAVE_BONJOUR
 +    if (s->need_service_cleanup) {
 +        AvahiService *as, *next;
-+        
++
 +        for (as = s->services; as; as = next) {
 +            next = as->services_next;
-+            
++
 +            if (as->dead)
 +                avahi_service_free(s, as);
 +        }
@@ -218,17 +218,8 @@
 +
      if (s->need_browser_cleanup)
          avahi_browser_cleanup(s);
- }
-@@ -226,7 +410,7 @@
-         int is_first = 1;
-         
-         /* Update and existing record */
--
-+ 
-         /* Find the first matching entry */
-         for (e = avahi_hashmap_lookup(s->entries_by_key, r->key); e; e = e->by_key_next) {
-             if (!e->dead && e->group == g && e->interface == interface && e->protocol == protocol)
-@@ -237,8 +421,54 @@
+ 
+@@ -245,8 +429,54 @@
  
          /* Hmm, nothing found? */
          if (!e) {
@@ -283,7 +274,7 @@
          }
  
          /* Update the entry */
-@@ -248,6 +478,36 @@
+@@ -256,6 +486,36 @@
  
          /* Announce our changes when needed */
          if (!avahi_record_equal_no_ttl(old_record, r) && (!g || g->state != AVAHI_ENTRY_GROUP_UNCOMMITED)) {
@@ -320,7 +311,7 @@
  
              /* Remove the old entry from all caches, if needed */
              if (!(e->flags & AVAHI_PUBLISH_UNIQUE))
-@@ -255,6 +515,7 @@
+@@ -263,6 +523,7 @@
  
              /* Reannounce our updated entry */
              avahi_reannounce_entry(s, e);
@@ -328,7 +319,7 @@
          }
  
          /* If we were the first entry in the list, we need to update the key */
-@@ -265,6 +526,14 @@
+@@ -273,6 +534,14 @@
  
      } else {
          AvahiEntry *t;
@@ -342,13 +333,13 @@
 +#endif
  
          /* Add a new record */
-     
-@@ -299,7 +568,69 @@
+ 
+@@ -307,7 +576,69 @@
          if (g)
-             AVAHI_LLIST_PREPEND(AvahiEntry, by_group, g->entries, e); 
-         
+             AVAHI_LLIST_PREPEND(AvahiEntry, by_group, g->entries, e);
+ 
 +#ifdef HAVE_BONJOUR
-+        e->recordref = NULL; 
++        e->recordref = NULL;
 +        if (!g->record_connection) {
 +            if (DNSServiceCreateConnection(&g->record_connection) != kDNSServiceErr_NoError) {
 +                avahi_entry_free(s, e);
@@ -384,7 +375,7 @@
 +        ret = DNSServiceRegisterRecord(g->record_connection,
 +                  &e->recordref,
 +                  bflags,
-+                  interface == AVAHI_IF_UNSPEC ? 
++                  interface == AVAHI_IF_UNSPEC ?
 +                      kDNSServiceInterfaceIndexAny :
 +                      interface,
 +                  record_name,
@@ -413,19 +404,17 @@
      }
  
      return e;
-@@ -575,7 +906,10 @@
+@@ -583,6 +914,9 @@
      AvahiRecord *r = NULL;
      int ret = AVAHI_OK;
      AvahiEntry *srv_entry = NULL, *txt_entry = NULL, *ptr_entry = NULL, *enum_entry = NULL;
--    
 +#ifdef HAVE_BONJOUR
 +    AvahiService *as;
 +#endif
-+ 
+ 
      assert(s);
      assert(type);
-     assert(name);
-@@ -595,6 +929,36 @@
+@@ -603,6 +937,36 @@
      if (!domain)
          domain = s->domain_name;
  
@@ -462,7 +451,7 @@
      if (!host)
          host = s->host_name_fqdn;
  
-@@ -659,6 +1023,7 @@
+@@ -667,6 +1031,7 @@
          ret = avahi_server_errno(s);
          goto fail;
      }
@@ -470,26 +459,7 @@
  
  fail:
      if (ret != AVAHI_OK && !(flags & AVAHI_PUBLISH_UPDATE)) {
-@@ -938,6 +1303,18 @@
-     return e;
- }
- 
-+#ifdef HAVE_BONJOUR
-+static void server_cleanup_time_event_callback(AVAHI_GCC_UNUSED AvahiTimeEvent *e, void* userdata) {
-+    AvahiServer *s = userdata;
-+    assert(s);
-+
-+    avahi_time_event_free(s->cleanup_time_event);
-+    s->cleanup_time_event = NULL;
-+    
-+    avahi_cleanup_dead_entries(s);
-+}
-+#endif
-+
- int avahi_server_add_dns_server_address(
-     AvahiServer *s,
-     AvahiSEntryGroup *g,
-@@ -1005,7 +1382,11 @@
+@@ -1013,7 +1378,11 @@
      if (g->state == state)
          return;
  
@@ -501,7 +471,7 @@
  
      if (g->state == AVAHI_ENTRY_GROUP_ESTABLISHED) {
  
-@@ -1050,6 +1431,10 @@
+@@ -1063,6 +1432,10 @@
      g->register_time.tv_sec = 0;
      g->register_time.tv_usec = 0;
      AVAHI_LLIST_HEAD_INIT(AvahiEntry, g->entries);
@@ -512,14 +482,14 @@
  
      AVAHI_LLIST_PREPEND(AvahiSEntryGroup, groups, s->groups, g);
      return g;
-@@ -1057,16 +1442,26 @@
+@@ -1087,16 +1460,26 @@
  
  void avahi_s_entry_group_free(AvahiSEntryGroup *g) {
      AvahiEntry *e;
 +#ifdef HAVE_BONJOUR
 +    AvahiService *s;
 +#endif
-     
+ 
      assert(g);
      assert(g->server);
  
@@ -539,15 +509,15 @@
  
      if (g->register_time_event) {
          avahi_time_event_free(g->register_time_event);
-@@ -1077,9 +1472,17 @@
-     
+@@ -1107,11 +1490,17 @@
+ 
      g->server->need_group_cleanup = 1;
      g->server->need_entry_cleanup = 1;
 +#ifdef HAVE_BONJOUR
 +    g->server->need_service_cleanup = 1;
-+    if (!g->server->cleanup_time_event)
-+        g->server->cleanup_time_event = avahi_time_event_new(g->server->time_event_queue, NULL, server_cleanup_time_event_callback, g->server);
 +#endif
+ 
+     schedule_cleanup(g->server);
  }
  
  static void entry_group_commit_real(AvahiSEntryGroup *g) {
@@ -557,7 +527,7 @@
      assert(g);
  
      gettimeofday(&g->register_time, NULL);
-@@ -1089,8 +1492,15 @@
+@@ -1121,8 +1510,15 @@
      if (g->dead)
          return;
  
@@ -573,7 +543,7 @@
  }
  
  static void entry_group_register_time_event_callback(AVAHI_GCC_UNUSED AvahiTimeEvent *e, void* userdata) {
-@@ -1143,16 +1553,29 @@
+@@ -1175,16 +1571,28 @@
  
  void avahi_s_entry_group_reset(AvahiSEntryGroup *g) {
      AvahiEntry *e;
@@ -581,7 +551,7 @@
 +    AvahiService *s;
 +#endif
      assert(g);
-     
+ 
      for (e = g->entries; e; e = e->by_group_next) {
          if (!e->dead) {
 +#ifndef HAVE_BONJOUR
@@ -597,13 +567,12 @@
 +        s->dead = 1;
 +    }
 +    g->server->need_service_cleanup = 1;
-+    if (!g->server->cleanup_time_event)
-+        g->server->cleanup_time_event = avahi_time_event_new(g->server->time_event_queue, NULL, server_cleanup_time_event_callback, g->server);
 +#endif
++
      g->n_probing = 0;
-
+ 
      avahi_s_entry_group_change_state(g, AVAHI_ENTRY_GROUP_UNCOMMITED);
-@@ -1195,12 +1618,23 @@
+@@ -1222,12 +1630,23 @@
  
  int avahi_s_entry_group_is_empty(AvahiSEntryGroup *g) {
      AvahiEntry *e;
--- a/patches/avahi-04-internal.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-04-internal.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.10/avahi-core/internal.h	2006-02-20 16:20:39.000000000 +0000
-+++ avahi-0.6.10/avahi-core/internal.h	2006-05-25 16:55:38.318495000 +0100
-@@ -24,6 +24,10 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/internal.h	2010-08-26 01:51:38.988153000 +0100
++++ avahi-0.6.28/avahi-core/internal.h	2011-01-20 12:06:07.798532060 +0000
+@@ -22,6 +22,10 @@
  
  /** A locally registered DNS resource record */
  typedef struct AvahiEntry AvahiEntry;
@@ -11,7 +11,7 @@
  
  #include <avahi-common/llist.h>
  #include <avahi-common/watch.h>
-@@ -73,6 +77,10 @@
+@@ -72,6 +76,10 @@
      AvahiIfIndex interface;
      AvahiProtocol protocol;
  
@@ -22,8 +22,8 @@
      AVAHI_LLIST_FIELDS(AvahiEntry, entries);
      AVAHI_LLIST_FIELDS(AvahiEntry, by_key);
      AVAHI_LLIST_FIELDS(AvahiEntry, by_group);
-@@ -98,6 +106,11 @@
-     
+@@ -97,6 +105,11 @@
+ 
      AVAHI_LLIST_FIELDS(AvahiSEntryGroup, groups);
      AVAHI_LLIST_HEAD(AvahiEntry, entries);
 +#ifdef HAVE_BONJOUR
@@ -34,7 +34,7 @@
  };
  
  struct AvahiServer {
-@@ -107,6 +120,10 @@
+@@ -106,6 +119,10 @@
      AvahiServerConfig config;
  
      AVAHI_LLIST_HEAD(AvahiEntry, entries);
@@ -45,14 +45,13 @@
      AvahiHashmap *entries_by_key;
  
      AVAHI_LLIST_HEAD(AvahiSEntryGroup, groups);
-@@ -122,6 +139,10 @@
+@@ -121,6 +138,9 @@
      AVAHI_LLIST_HEAD(AvahiSDNSServerBrowser, dns_server_browsers);
  
      int need_entry_cleanup, need_group_cleanup, need_browser_cleanup;
 +#ifdef HAVE_BONJOUR
 +    int need_service_cleanup;
-+    AvahiTimeEvent *cleanup_time_event;
 +#endif
-     
-     AvahiTimeEventQueue *time_event_queue;
-     
+ 
+     /* Used for scheduling RR cleanup */
+     AvahiTimeEvent *cleanup_time_event;
--- a/patches/avahi-05-resolve-service.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-05-resolve-service.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.12/avahi-core/resolve-service.c	2006-04-01 01:48:59.000000000 +0100
-+++ avahi-0.6.12/avahi-core/resolve-service.c	2006-08-28 14:40:21.749772000 +0100
-@@ -27,6 +27,10 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/resolve-service.c	2010-08-26 01:51:38.991153000 +0100
++++ avahi-0.6.28/avahi-core/resolve-service.c	2011-01-20 12:36:38.289095469 +0000
+@@ -25,6 +25,10 @@
  #include <stdio.h>
  #include <stdlib.h>
  
@@ -11,7 +11,7 @@
  #include <avahi-common/domain.h>
  #include <avahi-common/timeval.h>
  #include <avahi-common/malloc.h>
-@@ -61,9 +65,302 @@
+@@ -59,9 +63,303 @@
  
      AvahiTimeEvent *time_event;
  
@@ -47,18 +47,18 @@
 +    switch (event) {
 +        case AVAHI_RESOLVER_FAILURE:
 +
-+            r->callback(r, 
-+                r->interface, 
-+                r->protocol, 
-+                event, 
-+                r->service_name, 
-+                r->service_type, 
-+                r->domain_name, 
-+                NULL, 
-+                NULL, 
-+                0, 
-+                NULL, 
-+                flags, 
++            r->callback(r,
++                r->interface,
++                r->protocol,
++                event,
++                r->service_name,
++                r->service_type,
++                r->domain_name,
++                NULL,
++                NULL,
++                0,
++                NULL,
++                flags,
 +                r->userdata);
 +            break;
 +
@@ -85,18 +85,18 @@
 +            flags = 0;
 +            if (avahi_domain_equal(r->server->host_name_fqdn, r->host))
 +                flags |= AVAHI_LOOKUP_RESULT_LOCAL;
-+            r->callback(r, 
-+                r->interface, 
-+                r->protocol, 
-+                event, 
-+                r->service_name, 
-+                r->service_type, 
-+                r->domain_name, 
-+                r->host, 
-+                r->address_record ? &a : NULL, 
-+                r->port, 
-+                r->txt_record ? r->txt_record->data.txt.string_list : NULL, 
-+                flags, 
++            r->callback(r,
++                r->interface,
++                r->protocol,
++                event,
++                r->service_name,
++                r->service_type,
++                r->domain_name,
++                r->host,
++                r->address_record ? &a : NULL,
++                 r->port,
++                r->txt_record ? r->txt_record->data.txt.string_list : NULL,
++                flags,
 +                r->userdata);
 +            break;
 +        }
@@ -152,6 +152,7 @@
 +            break;
 +        default:
 +            abort();
++
 +    }
 +
 +    if (changed &&
@@ -187,21 +188,21 @@
 +                r->watch = NULL;
 +            }
 +            DNSServiceRefDeallocate(r->client);
-+            r->client = NULL; 
++            r->client = NULL;
 +        } else if (client == r->client_a) {
 +            if (r->watch_a) {
 +                r->server->poll_api->watch_free(r->watch_a);
 +                r->watch_a = NULL;
 +            }
 +            DNSServiceRefDeallocate(r->client_a);
-+            r->client_a = NULL; 
++            r->client_a = NULL;
 +        } else if (client == r->client_a6) {
 +            if (r->watch_a6) {
 +                r->server->poll_api->watch_free(r->watch_a6);
 +                r->watch_a6 = NULL;
 +            }
 +            DNSServiceRefDeallocate(r->client_a6);
-+            r->client_a6 = NULL; 
++            r->client_a6 = NULL;
 +        }
 +        avahi_server_set_errno(r->server, AVAHI_ERR_DISCONNECTED);
 +        finish(r, AVAHI_RESOLVER_FAILURE);
@@ -293,9 +294,9 @@
 +static void avahi_resolve_service_start(AvahiServer *s, AvahiSServiceResolver *r) {
 +    DNSServiceErrorType ret;
 +
-+    ret = DNSServiceResolve(&r->client, 
++    ret = DNSServiceResolve(&r->client,
 +              0,
-+              r->interface == AVAHI_IF_UNSPEC ? 
++              r->interface == AVAHI_IF_UNSPEC ?
 +                  kDNSServiceInterfaceIndexAny :
 +                  r->interface,
 +              r->service_name,
@@ -313,8 +314,8 @@
 +
  static void finish(AvahiSServiceResolver *r, AvahiResolverEvent event) {
      AvahiLookupResultFlags flags;
-     
-@@ -142,6 +439,7 @@
+ 
+@@ -140,6 +438,7 @@
          }
      }
  }
@@ -322,7 +323,7 @@
  
  static void time_event_callback(AvahiTimeEvent *e, void *userdata) {
      AvahiSServiceResolver *r = userdata;
-@@ -165,6 +463,7 @@
+@@ -163,6 +462,7 @@
      r->time_event = avahi_time_event_new(r->server->time_event_queue, &tv, time_event_callback, r);
  }
  
@@ -330,7 +331,7 @@
  static void record_browser_callback(
      AvahiSRecordBrowser*rr,
      AvahiIfIndex interface,
-@@ -376,6 +675,7 @@
+@@ -374,6 +674,7 @@
              break;
      }
  }
@@ -338,7 +339,7 @@
  
  AvahiSServiceResolver *avahi_s_service_resolver_new(
      AvahiServer *server,
-@@ -435,6 +735,17 @@
+@@ -433,6 +734,17 @@
      r->time_event = NULL;
      AVAHI_LLIST_PREPEND(AvahiSServiceResolver, resolver, server->service_resolvers, r);
  
@@ -356,18 +357,18 @@
      k = avahi_key_new(n, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_SRV);
      r->record_browser_srv = avahi_s_record_browser_new(server, interface, protocol, k, flags & ~(AVAHI_LOOKUP_NO_TXT|AVAHI_LOOKUP_NO_ADDRESS), record_browser_callback, r);
      avahi_key_unref(k);
-@@ -454,6 +765,7 @@
+@@ -452,6 +764,7 @@
              return NULL;
          }
      }
 +#endif
  
      start_timeout(r);
-     
-@@ -484,6 +796,29 @@
+ 
+@@ -482,6 +795,29 @@
      if (r->address_record)
          avahi_record_unref(r->address_record);
-     
+ 
 +#ifdef HAVE_BONJOUR
 +    if (r->defer_time_event) {
 +        avahi_time_event_free(r->defer_time_event);
--- a/patches/avahi-06-server.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-06-server.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,28 @@
---- /usr/tmp/clean/avahi-0.6.12/avahi-core/server.c	2006-06-21 22:51:19.000000000 +0100
-+++ avahi-0.6.12/avahi-core/server.c	2006-08-21 10:49:46.941313000 +0100
-@@ -1330,6 +1334,10 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/server.c	2010-08-26 01:51:38.993153000 +0100
++++ avahi-0.6.28/avahi-core/server.c	2011-01-20 12:44:02.347982322 +0000
+@@ -1074,7 +1074,9 @@
+ 
+     s->state = state;
+ 
++#ifndef HAVE_BONJOUR
+     avahi_interface_monitor_update_rrs(s->monitor, 0);
++#endif
+ 
+     if (s->callback)
+         s->callback(s, state, s->userdata);
+@@ -1211,9 +1213,11 @@
+     server_set_state(s, AVAHI_SERVER_REGISTERING);
+     s->n_host_rr_pending ++; /** Make sure that the state isn't changed tp AVAHI_SERVER_RUNNING too early */
+ 
++#ifndef HAVE_BONJOUR
+     register_hinfo(s);
+     register_browse_domain(s);
+     avahi_interface_monitor_update_rrs(s->monitor, 0);
++#endif
+ 
+     assert(s->n_host_rr_pending > 0);
+     s->n_host_rr_pending --;
+@@ -1373,6 +1377,10 @@
      else
          avahi_server_config_init(&s->config);
  
@@ -11,7 +33,16 @@
      if ((e = setup_sockets(s)) < 0) {
          if (error)
              *error = e;
-@@ -1384,6 +1393,12 @@
+@@ -1382,7 +1390,7 @@
+ 
+         return NULL;
+     }
+-
++#endif
+     s->n_host_rr_pending = 0;
+     s->need_entry_cleanup = 0;
+     s->need_group_cleanup = 0;
+@@ -1428,6 +1436,12 @@
          s->local_service_cookie = (uint32_t) rand() * (uint32_t) rand();
      } while (s->local_service_cookie == AVAHI_SERVICE_COOKIE_INVALID);
  
@@ -24,7 +55,15 @@
      if (s->config.enable_wide_area) {
          s->wide_area_lookup_engine = avahi_wide_area_engine_new(s);
          avahi_wide_area_set_servers(s->wide_area_lookup_engine, s->config.wide_area_servers, s->config.n_wide_area_servers);
-@@ -1428,7 +1444,8 @@
+@@ -1438,6 +1452,7 @@
+ 
+     s->monitor = avahi_interface_monitor_new(s);
+     avahi_interface_monitor_sync(s->monitor);
++#endif
+ 
+     register_localhost(s);
+     register_stuff(s);
+@@ -1472,7 +1487,8 @@
      while(s->entries)
          avahi_entry_free(s, s->entries);
  
@@ -34,7 +73,17 @@
  
      while (s->groups)
          avahi_entry_group_free(s, s->groups);
-@@ -1477,6 +1495,11 @@
+@@ -1485,7 +1501,8 @@
+ 
+     if (s->wide_area_lookup_engine)
+         avahi_wide_area_engine_free(s->wide_area_lookup_engine);
+-    avahi_multicast_lookup_engine_free(s->multicast_lookup_engine);
++    if (s->multicast_lookup_engine)
++        avahi_multicast_lookup_engine_free(s->multicast_lookup_engine);
+ 
+     if (s->cleanup_time_event)
+         avahi_time_event_free(s->cleanup_time_event);
+@@ -1524,6 +1541,11 @@
  
      avahi_server_config_free(&s->config);
  
@@ -46,55 +95,3 @@
      avahi_free(s);
  }
  
-diff -ruN avahi-0.6.25.orig/avahi-core/server.c avahi-0.6.25/avahi-core/server.c
---- avahi-0.6.25.orig/avahi-core/server.c	2009-07-28 13:57:19.200269501 +0100
-+++ avahi-0.6.25/avahi-core/server.c	2009-07-28 14:01:54.826596123 +0100
-@@ -1083,7 +1083,9 @@
- 
-     s->state = state;
- 
-+#ifndef HAVE_BONJOUR
-     avahi_interface_monitor_update_rrs(s->monitor, 0);
-+#endif
- 
-     if (s->callback)
-         s->callback(s, state, s->userdata);
-@@ -1220,9 +1222,11 @@
-     server_set_state(s, AVAHI_SERVER_REGISTERING);
-     s->n_host_rr_pending ++; /** Make sure that the state isn't changed tp AVAHI_SERVER_RUNNING too early */
- 
-+#ifndef HAVE_BONJOUR
-     register_hinfo(s);
-     register_browse_domain(s);
-     avahi_interface_monitor_update_rrs(s->monitor, 0);
-+#endif
- 
-     s->n_host_rr_pending --;
- 
-@@ -1393,7 +1397,7 @@
- 
-         return NULL;
-     }
--
-+#endif
-     s->n_host_rr_pending = 0;
-     s->need_entry_cleanup = 0;
-     s->need_group_cleanup = 0;
-@@ -1454,6 +1458,7 @@
- 
-     s->monitor = avahi_interface_monitor_new(s);
-     avahi_interface_monitor_sync(s->monitor);
-+#endif
- 
-     register_localhost(s);
-     register_stuff(s);
-@@ -1502,7 +1507,8 @@
- 
-     if (s->wide_area_lookup_engine)
-         avahi_wide_area_engine_free(s->wide_area_lookup_engine);
--    avahi_multicast_lookup_engine_free(s->multicast_lookup_engine);
-+    if (s->multicast_lookup_engine)
-+        avahi_multicast_lookup_engine_free(s->multicast_lookup_engine);
- 
-     avahi_time_event_queue_free(s->time_event_queue);
- 
--- a/patches/avahi-07-daemon.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-07-daemon.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.25/avahi-daemon/main.c	2008-12-12 21:36:15.000000000 +0000
-+++ avahi-0.6.25/avahi-daemon/main.c	2009-08-04 08:17:02.469032000 +0100
-@@ -75,7 +75,9 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-daemon/main.c	2010-08-26 01:51:39.000153000 +0100
++++ avahi-0.6.28/avahi-daemon/main.c	2011-01-20 14:40:47.924814317 +0000
+@@ -73,7 +73,9 @@
  
  #include "setproctitle.h"
  #include "main.h"
@@ -10,7 +10,7 @@
  #include "static-services.h"
  #include "static-hosts.h"
  #include "ini-file-parser.h"
-@@ -132,11 +134,13 @@
+@@ -134,11 +136,13 @@
  #define RESOLV_CONF "/etc/resolv.conf"
  #define BROWSE_DOMAINS_MAX 16
  
@@ -24,7 +24,7 @@
  
  static DaemonConfig config;
  
-@@ -148,6 +152,7 @@
+@@ -150,6 +154,7 @@
      return strlen(s) >= l && strncmp(s, prefix, l) == 0;
  }
  
@@ -32,15 +32,15 @@
  static int load_resolv_conf(void) {
      int ret = -1;
      FILE *f;
-@@ -331,6 +336,7 @@
- 
+@@ -334,6 +339,7 @@
      avahi_server_set_browse_domains(avahi_server, l);
+     avahi_string_list_free(l);
  }
 +#endif
  
  static void server_callback(AvahiServer *s, AvahiServerState state, void *userdata) {
      DaemonConfig *c = userdata;
-@@ -356,7 +362,7 @@
+@@ -359,7 +365,7 @@
  
              static_service_add_to_server();
              static_hosts_add_to_server();
@@ -49,7 +49,7 @@
              remove_dns_server_entry_groups();
  
              if (c->publish_resolv_conf && resolv_conf_name_servers && resolv_conf_name_servers[0])
-@@ -366,6 +372,7 @@
+@@ -369,6 +375,7 @@
                  dns_servers_entry_group = add_dns_servers(s, dns_servers_entry_group, c->publish_dns_servers);
  
              simple_protocol_restart_queries();
@@ -57,7 +57,7 @@
              break;
  
          case AVAHI_SERVER_COLLISION: {
-@@ -375,7 +382,9 @@
+@@ -376,7 +383,9 @@
  
              static_service_remove_from_server();
              static_hosts_remove_from_server();
@@ -66,8 +66,8 @@
 +#endif
  
              n = avahi_alternative_host_name(avahi_server_get_host_name(s));
-             avahi_log_warn("Host name conflict, retrying with <%s>", n);
-@@ -397,7 +406,9 @@
+ 
+@@ -405,7 +414,9 @@
  
              static_service_remove_from_server();
              static_hosts_remove_from_server();
@@ -77,7 +77,7 @@
  
              break;
  
-@@ -417,9 +428,11 @@
+@@ -425,9 +436,11 @@
              "    -r --reload        Request a running daemon to reload static services\n"
              "    -c --check         Return 0 if a daemon is already running\n"
              "    -V --version       Show version\n"
@@ -89,7 +89,7 @@
              "       --no-drop-root  Don't drop privileges\n"
  #ifdef ENABLE_CHROOT
              "       --no-chroot     Don't chroot()\n"
-@@ -448,11 +461,15 @@
+@@ -456,11 +469,15 @@
          { "daemonize",      no_argument,       NULL, 'D' },
          { "kill",           no_argument,       NULL, 'k' },
          { "version",        no_argument,       NULL, 'V' },
@@ -105,7 +105,7 @@
          { "no-drop-root",   no_argument,       NULL, OPTION_NO_DROP_ROOT },
  #ifdef ENABLE_CHROOT
          { "no-chroot",      no_argument,       NULL, OPTION_NO_CHROOT },
-@@ -464,7 +481,11 @@
+@@ -472,7 +489,11 @@
  
      assert(c);
  
@@ -117,7 +117,7 @@
  
          switch(o) {
              case 's':
-@@ -482,6 +503,7 @@
+@@ -490,6 +511,7 @@
              case 'V':
                  c->command = DAEMON_VERSION;
                  break;
@@ -125,7 +125,7 @@
              case 'f':
                  avahi_free(c->config_file);
                  c->config_file = avahi_strdup(optarg);
-@@ -489,12 +511,15 @@
+@@ -497,12 +519,15 @@
              case 'r':
                  c->command = DAEMON_RELOAD;
                  break;
@@ -141,15 +141,15 @@
              case OPTION_NO_DROP_ROOT:
                  c->drop_root = 0;
                  break;
-@@ -528,6 +553,7 @@
-     return *s == 'y' || *s == 'Y' || *s == '1' || *s == 't' || *s == 'T';
+@@ -576,6 +601,7 @@
+     return 0;
  }
  
 +#ifndef HAVE_BONJOUR
  static int load_config_file(DaemonConfig *c) {
      int r = -1;
      AvahiIniFile *f;
-@@ -739,6 +765,7 @@
+@@ -845,6 +871,7 @@
  
      return r;
  }
@@ -157,7 +157,7 @@
  
  static void log_function(AvahiLogLevel level, const char *txt) {
  
-@@ -859,6 +886,7 @@
+@@ -965,6 +992,7 @@
      static_service_add_to_server();
      static_hosts_add_to_server();
  
@@ -165,7 +165,7 @@
      if (resolv_conf_entry_group)
          avahi_s_entry_group_reset(resolv_conf_entry_group);
  
-@@ -869,6 +897,7 @@
+@@ -975,6 +1003,7 @@
  
      if (config.publish_resolv_conf && resolv_conf_name_servers && resolv_conf_name_servers[0])
          resolv_conf_entry_group = add_dns_servers(avahi_server, resolv_conf_entry_group, resolv_conf_name_servers);
@@ -173,7 +173,7 @@
  }
  
  #ifdef HAVE_INOTIFY
-@@ -956,8 +985,12 @@
+@@ -1062,8 +1091,12 @@
              break;
  
          case SIGUSR1:
@@ -186,9 +186,9 @@
              break;
  
          default:
-@@ -985,8 +1018,10 @@
+@@ -1103,8 +1136,10 @@
  
-     assert(c);
+     ignore_signal(SIGPIPE);
  
 +#ifndef HAVE_BONJOUR
      if (!(nss_support = avahi_nss_support()))
@@ -197,7 +197,7 @@
  
      if (!(simple_poll_api = avahi_simple_poll_new())) {
          avahi_log_error("Failed to create main loop object.");
-@@ -1005,8 +1040,10 @@
+@@ -1123,8 +1158,10 @@
          goto finish;
      }
  
@@ -208,7 +208,7 @@
  
  #ifdef HAVE_DBUS
      if (c->enable_dbus) {
-@@ -1070,7 +1107,9 @@
+@@ -1193,7 +1230,9 @@
      }
  #endif
  
@@ -218,7 +218,7 @@
  #ifdef ENABLE_CHROOT
      static_service_load(config.use_chroot);
      static_hosts_load(config.use_chroot);
-@@ -1084,8 +1123,10 @@
+@@ -1207,8 +1246,10 @@
          goto finish;
      }
  
@@ -229,7 +229,7 @@
  
      if (c->daemonize) {
          daemon_retval_send(0);
-@@ -1114,10 +1155,12 @@
+@@ -1238,10 +1279,12 @@
  
      static_hosts_remove_from_server();
      static_hosts_free_all();
@@ -242,7 +242,7 @@
  
  #ifdef HAVE_DBUS
      if (c->enable_dbus)
-@@ -1428,8 +1471,10 @@
+@@ -1555,8 +1598,10 @@
              goto finish;
          }
  
@@ -253,7 +253,7 @@
  
          if (config.daemonize) {
              daemon_retval_init();
-@@ -1516,9 +1561,13 @@
+@@ -1648,9 +1693,13 @@
  
      avahi_server_config_free(&config.server_config);
      avahi_free(config.config_file);
--- a/patches/avahi-08-man-page.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-08-man-page.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,64 +1,3 @@
---- /usr/tmp/clean/avahi-0.6.19/man/Makefile.am	Wed May  9 15:30:24 2007
-+++ avahi-0.6.19/man/Makefile.am	Wed Jun 13 15:22:13 2007
-@@ -47,6 +47,11 @@
- 	avahi-autoipd.action.8.xml \
- 	bssh.1.xml
- 
-+if HAVE_BONJOUR
-+noinst_DATA += \
-+       avahi-daemon-bridge-dsd.1.xml
-+endif
-+
- CLEANFILES = \
- 	$(noinst_DATA)
- 
-@@ -80,6 +85,15 @@
- endif
- endif
- 
-+if HAVE_BONJOUR
-+man_MANS += \
-+	avahi-daemon-bridge-dsd.1
-+
-+avahi-daemon-bridge-dsd.1.xml: avahi-daemon-bridge-dsd.1.xml.in Makefile
-+	sed -e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-+        -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
-+endif
-+
- avahi-browse.1.xml: avahi-browse.1.xml.in Makefile
- 	sed -e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-         -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
-@@ -155,6 +169,11 @@
- 
- CLEANFILES += $(man_MANS)
- 
-+if HAVE_BONJOUR
-+avahi-daemon-bridge-dsd.1: avahi-daemon-bridge-dsd.1.xml Makefile
-+	xmltoman $< > $@
-+endif
-+
- avahi-browse.1: avahi-browse.1.xml Makefile
- 	xmltoman $< > $@
- 
-@@ -230,6 +249,10 @@
- 	xmltoman.xsl \
- 	xmltoman.dtd
- 
-+if HAVE_BONJOUR
-+EXTRA_DIST += \
-+	avahi-daemon-bridge-dsd.1.xml.in
-+endif
- 
- if HAVE_DBUS
- 
- install-exec-local:
- 	mkdir -p $(DESTDIR)/$(mandir)/man1 && \
- 		cd $(DESTDIR)/$(mandir)/man1 && \
--		rm -f avahi-resolve-host-name.1 avahi-resolve-address.1 avahi-browse-domains.1 avahi-publish-address.1 avahi-publish-service.1 && \
-+		rm -f avahi-resolve-host-name.1 avahi-resolve-address.1 avahi-browse-domains.1 avahi-publish-address.1 avahi-publish-service.1 bvnc.1 && \
- 		$(LN_S) avahi-resolve.1 avahi-resolve-host-name.1 && \
- 		$(LN_S) avahi-resolve.1 avahi-resolve-address.1 && \
- 		$(LN_S) avahi-browse.1 avahi-browse-domains.1 && \
 --- /dev/null	2007-06-13 17:00:01.000000000 +0100
 +++ avahi-0.6.19/man/avahi-daemon-bridge-dsd.1	2007-06-13 17:07:14.447743000 +0100
 @@ -0,0 +1,61 @@
@@ -358,3 +297,44 @@
  .SH SEE ALSO
  \fBavahi-browse(1)\f1, \fBssh(1)\f1, \fBvncviewer(1)\f1
  .SH COMMENTS
+--- /usr/tmp/clean/avahi-0.6.28/man/Makefile.am	2010-08-26 01:51:39.039153001 +0100
++++ avahi-0.6.28/man/Makefile.am	2011-01-20 14:48:39.364580063 +0000
+@@ -45,6 +45,11 @@
+ 	avahi-autoipd.action.8.xml \
+ 	bssh.1.xml
+ 
++if HAVE_BONJOUR
++noinst_DATA += \
++       avahi-daemon-bridge-dsd.1.xml
++endif
++
+ CLEANFILES = \
+ 	$(noinst_DATA)
+ 
+@@ -81,6 +86,15 @@
+ endif
+ endif
+ 
++if HAVE_BONJOUR
++man_MANS += \
++	avahi-daemon-bridge-dsd.1
++
++avahi-daemon-bridge-dsd.1.xml: avahi-daemon-bridge-dsd.1.xml.in Makefile
++	sed -e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
++	-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
++endif
++
+ %.xml: %.xml.in Makefile
+ 	$(AM_V_GEN) sed -e 's,@pkgsysconfdir\@,$(pkgsysconfdir),g' \
+ 		-e 's,@servicedir\@,$(servicedir),g' \
+@@ -130,6 +144,10 @@
+ 	xmltoman.xsl \
+ 	xmltoman.dtd
+ 
++if HAVE_BONJOUR
++EXTRA_DIST += \
++	avahi-daemon-bridge-dsd.1.xml.in
++endif
+ 
+ if HAVE_DBUS
+ 
--- a/patches/avahi-09-resolve-host-name.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-09-resolve-host-name.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.12/avahi-core/resolve-host-name.c	2006-03-02 01:30:17.000000000 +0000
-+++ avahi-0.6.12/avahi-core/resolve-host-name.c	2006-08-28 14:38:21.577853000 +0100
-@@ -24,6 +24,7 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/resolve-host-name.c	2010-08-26 01:51:38.991153000 +0100
++++ avahi-0.6.28/avahi-core/resolve-host-name.c	2011-01-20 15:06:17.971781264 +0000
+@@ -22,6 +22,7 @@
  #endif
  
  #include <stdlib.h>
@@ -8,7 +8,7 @@
  
  #include <avahi-common/domain.h>
  #include <avahi-common/timeval.h>
-@@ -52,6 +53,15 @@
+@@ -50,6 +51,15 @@
  
      AvahiTimeEvent *time_event;
  
@@ -24,11 +24,20 @@
      AVAHI_LLIST_FIELDS(AvahiSHostNameResolver, resolver);
  };
  
-@@ -96,6 +106,168 @@
+@@ -86,7 +96,7 @@
+             break;
+ 
+         }
+-
++  
+         case AVAHI_RESOLVER_FAILURE:
+ 
+             r->callback(r, r->interface, r->protocol, event, r->host_name, NULL, r->flags, r->userdata);
+@@ -94,6 +104,168 @@
      }
  }
  
-+#ifdef HAVE_BONJOUR 
++#ifdef HAVE_BONJOUR
 +static void resolve_socket_event(AvahiWatch *w, int fd, AvahiWatchEvent events,
 +void *userdata) {
 +    AvahiSHostNameResolver *r = userdata;
@@ -83,7 +92,7 @@
 +    if (r->interface <= 0)
 +       r->interface = IfIndex;
 +
-+    /* 
++    /*
 +     * Using Bonjour we cannot determine whether result was obtained from
 +     * multicast ot unicast query
 +     */
@@ -192,8 +201,8 @@
 +
  static void time_event_callback(AvahiTimeEvent *e, void *userdata) {
      AvahiSHostNameResolver *r = userdata;
-     
-@@ -118,6 +290,7 @@
+ 
+@@ -116,6 +288,7 @@
      r->time_event = avahi_time_event_new(r->server->time_event_queue, &tv, time_event_callback, r);
  }
  
@@ -201,7 +210,7 @@
  static void record_browser_callback(
      AvahiSRecordBrowser*rr,
      AvahiIfIndex interface,
-@@ -202,6 +375,7 @@
+@@ -200,6 +373,7 @@
              break;
      }
  }
@@ -209,7 +218,7 @@
  
  AvahiSHostNameResolver *avahi_s_host_name_resolver_new(
      AvahiServer *server,
-@@ -248,6 +422,15 @@
+@@ -246,6 +420,15 @@
  
      r->record_browser_aaaa = r->record_browser_a = NULL;
  
@@ -225,18 +234,18 @@
      if (aprotocol == AVAHI_PROTO_INET || aprotocol == AVAHI_PROTO_UNSPEC) {
          k = avahi_key_new(host_name, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_A);
          r->record_browser_a = avahi_s_record_browser_new(server, interface, protocol, k, flags, record_browser_callback, r);
-@@ -267,6 +450,7 @@
+@@ -265,6 +448,7 @@
      }
  
      assert(r->record_browser_aaaa || r->record_browser_a);
 +#endif
  
      start_timeout(r);
-     
-@@ -294,6 +478,23 @@
+ 
+@@ -291,6 +475,22 @@
+ 
      if (r->address_record)
          avahi_record_unref(r->address_record);
-     
 +#ifdef HAVE_BONJOUR
 +    if (r->defer_time_event) {
 +        avahi_time_event_free(r->defer_time_event);
@@ -253,7 +262,6 @@
 +    if (r->client_a6)
 +        DNSServiceRefDeallocate(r->client_a6);
 +#endif
-+
+ 
      avahi_free(r->host_name);
      avahi_free(r);
- }
--- a/patches/avahi-10-resolve-address.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-10-resolve-address.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.13/avahi-core/resolve-address.c	2006-03-02 00:59:13.000000000 +0000
-+++ avahi-0.6.13/avahi-core/resolve-address.c	2006-08-31 14:00:21.756949000 +0100
-@@ -24,6 +24,7 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/resolve-address.c	2010-08-26 01:51:38.991153000 +0100
++++ avahi-0.6.28/avahi-core/resolve-address.c	2011-01-20 15:17:11.922176647 +0000
+@@ -22,6 +22,7 @@
  #endif
  
  #include <stdlib.h>
@@ -8,7 +8,7 @@
  
  #include <avahi-common/timeval.h>
  #include <avahi-common/malloc.h>
-@@ -53,6 +54,13 @@
+@@ -51,6 +52,13 @@
  
      AvahiTimeEvent *time_event;
  
@@ -22,7 +22,7 @@
      AVAHI_LLIST_FIELDS(AvahiSAddressResolver, resolver);
  };
  
-@@ -76,6 +84,99 @@
+@@ -74,6 +82,100 @@
      }
  }
  
@@ -37,7 +37,7 @@
 +    assert(events & AVAHI_WATCH_IN);
 +
 +    assert (fd == DNSServiceRefSockFD(r->client));
-+    
++
 +    ret = DNSServiceProcessResult(r->client);
 +    if (ret != kDNSServiceErr_NoError) {
 +        if (r->watch) {
@@ -119,10 +119,11 @@
 +}
 +#endif
 +
++
  static void time_event_callback(AvahiTimeEvent *e, void *userdata) {
      AvahiSAddressResolver *r = userdata;
-     
-@@ -97,6 +198,7 @@
+ 
+@@ -95,6 +197,7 @@
      r->time_event = avahi_time_event_new(r->server->time_event_queue, &tv, time_event_callback, r);
  }
  
@@ -130,7 +131,7 @@
  static void record_browser_callback(
      AvahiSRecordBrowser*rr,
      AvahiIfIndex interface,
-@@ -175,6 +277,7 @@
+@@ -173,6 +276,7 @@
              break;
      }
  }
@@ -138,7 +139,7 @@
  
  AvahiSAddressResolver *avahi_s_address_resolver_new(
      AvahiServer *server,
-@@ -227,6 +330,13 @@
+@@ -225,6 +329,13 @@
  
      r->time_event = NULL;
  
@@ -152,18 +153,18 @@
      if (!(flags & (AVAHI_LOOKUP_USE_MULTICAST|AVAHI_LOOKUP_USE_WIDE_AREA))) {
  
          if (!server->wide_area_lookup_engine || !avahi_wide_area_has_servers(server->wide_area_lookup_engine))
-@@ -243,6 +353,7 @@
+@@ -241,6 +352,7 @@
          avahi_s_address_resolver_free(r);
          return NULL;
      }
 +#endif
  
      start_timeout(r);
-     
-@@ -266,5 +377,18 @@
+ 
+@@ -264,5 +376,18 @@
      if (r->key)
          avahi_key_unref(r->key);
-     
+ 
 +#ifdef HAVE_BONJOUR
 +    if (r->defer_time_event) {
 +        avahi_time_event_free(r->defer_time_event);
--- a/patches/avahi-11-browse-domain.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-11-browse-domain.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.12/avahi-core/browse-domain.c	2006-01-17 12:25:54.000000000 +0000
-+++ avahi-0.6.12/avahi-core/browse-domain.c	2006-08-28 14:04:34.905548000 +0100
-@@ -28,6 +28,9 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/browse-domain.c	2010-08-26 01:51:38.982153000 +0100
++++ avahi-0.6.28/avahi-core/browse-domain.c	2011-01-20 15:24:22.639202717 +0000
+@@ -26,6 +26,9 @@
  #include <avahi-common/domain.h>
  #include <avahi-common/malloc.h>
  #include <avahi-common/error.h>
@@ -10,10 +10,10 @@
  
  #include "browse.h"
  #include "log.h"
-@@ -47,6 +50,14 @@
+@@ -45,6 +48,14 @@
  
      int all_for_now_scheduled;
-     
+ 
 +#ifdef HAVE_BONJOUR
 +    AvahiIfIndex interface;
 +    AvahiTimeEvent *browse_error_event;
@@ -25,7 +25,7 @@
      AVAHI_LLIST_FIELDS(AvahiSDomainBrowser, browser);
  };
  
-@@ -137,6 +148,122 @@
+@@ -135,6 +146,122 @@
      avahi_s_domain_browser_free(b);
  }
  
@@ -148,7 +148,7 @@
  AvahiSDomainBrowser *avahi_s_domain_browser_new(
      AvahiServer *server,
      AvahiIfIndex interface,
-@@ -193,6 +320,15 @@
+@@ -191,6 +318,15 @@
  
      AVAHI_LLIST_PREPEND(AvahiSDomainBrowser, browser, server->domain_browsers, b);
  
@@ -164,16 +164,16 @@
      if (!(k = avahi_key_new(n, AVAHI_DNS_CLASS_IN, AVAHI_DNS_TYPE_PTR))) {
          avahi_server_set_errno(server, AVAHI_ERR_NO_MEMORY);
          goto fail;
-@@ -205,6 +341,7 @@
+@@ -203,6 +339,7 @@
  
      if (type == AVAHI_DOMAIN_BROWSER_BROWSE && b->server->config.browse_domains)
          b->defer_event = avahi_time_event_new(server->time_event_queue, NULL, defer_callback, b);
 +#endif
-     
+ 
      return b;
-     
-@@ -227,6 +364,23 @@
-     
+ 
+@@ -225,6 +362,23 @@
+ 
      AVAHI_LLIST_REMOVE(AvahiSDomainBrowser, browser, b->server->domain_browsers, b);
  
 +#ifdef HAVE_BONJOUR
--- a/patches/avahi-12-browse.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-12-browse.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,6 +1,6 @@
---- /usr/tmp/clean/avahi-0.6.13/avahi-core/browse.c	2006-06-22 00:30:49.000000000 +0100
-+++ avahi-0.6.13/avahi-core/browse.c	2006-08-31 13:54:14.293664000 +0100
-@@ -24,6 +24,7 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/browse.c	2010-08-26 01:51:38.983153000 +0100
++++ avahi-0.6.28/avahi-core/browse.c	2011-01-20 15:27:33.366236170 +0000
+@@ -22,6 +22,7 @@
  #endif
  
  #include <stdlib.h>
@@ -8,7 +8,7 @@
  
  #include <avahi-common/timeval.h>
  #include <avahi-common/malloc.h>
-@@ -521,6 +522,91 @@
+@@ -519,6 +520,91 @@
      }
  }
  
@@ -100,11 +100,10 @@
  AvahiSRecordBrowser *avahi_s_record_browser_new(
      AvahiServer *server,
      AvahiIfIndex interface,
-@@ -561,10 +647,15 @@
-     b->root_lookup = NULL;
-     
+@@ -560,9 +646,15 @@
+ 
      AVAHI_LLIST_PREPEND(AvahiSRecordBrowser, browser, server->record_browsers, b);
--
+ 
 +#ifdef HAVE_BONJOUR
 +    b->watch = NULL;
 +    b->client = NULL;
@@ -114,10 +113,10 @@
      b->defer_time_event = avahi_time_event_new(server->time_event_queue, NULL, defer_callback, b);
      assert(b->defer_time_event);
 +#endif
-     
+ 
      return b;
  }
-@@ -577,6 +668,13 @@
+@@ -575,6 +667,13 @@
      b->server->need_browser_cleanup = 1;
  
      browser_cancel(b);
@@ -131,7 +130,7 @@
  }
  
  void avahi_s_record_browser_destroy(AvahiSRecordBrowser *b) {
-@@ -610,6 +708,8 @@
+@@ -608,6 +707,8 @@
  
      if (server->wide_area_lookup_engine)
          avahi_wide_area_cleanup(server->wide_area_lookup_engine);
@@ -140,9 +139,9 @@
 +#endif
  }
  
---- /usr/tmp/clean/avahi-0.6.12/avahi-core/browse.h	2005-10-25 00:44:41.000000000 +0100
-+++ avahi-0.6.12/avahi-core/browse.h	2006-08-24 09:21:09.326626000 +0100
-@@ -52,6 +52,11 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-core/browse.h	2010-08-26 01:51:38.983153000 +0100
++++ avahi-0.6.28/avahi-core/browse.h	2011-01-21 09:33:14.663164775 +0000
+@@ -50,6 +50,12 @@
      unsigned n_lookups;
  
      AvahiSRBLookup *root_lookup;
@@ -151,6 +150,7 @@
 +    DNSServiceRef client;
 +    AvahiWatch *watch;
 +#endif
++
  };
  
  void avahi_browser_cleanup(AvahiServer *server);
--- a/patches/avahi-13-remove-debug-trap.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-13-remove-debug-trap.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -34,18 +34,6 @@
  avahi_commonincludedir=$(includedir)/avahi-common
  
  avahi_commoninclude_HEADERS = \
---- /usr/tmp/clean/avahi-0.6.23/avahi-discover-standalone/Makefile.am	2008-06-18 00:13:44.000000000 +0100
-+++ avahi-0.6.23/avahi-discover-standalone/Makefile.am	2008-06-25 14:01:51.336793000 +0100
-@@ -22,9 +22,6 @@
- interfaces = \
-         avahi-discover.glade
- 
--# This cool debug trap works on i386/gcc only
--AM_CFLAGS+='-DDEBUG_TRAP=__asm__("int $$3")'
--
- if HAVE_GTK
- if  HAVE_GLIB
- bin_PROGRAMS = \
 --- /usr/tmp/clean/avahi-0.6.12/avahi-client/Makefile.am	2006-03-01 23:27:45.000000000 +0000
 +++ avahi-0.6.12/avahi-client/Makefile.am	2006-08-22 09:37:26.320792000 +0100
 @@ -19,9 +19,6 @@
@@ -70,18 +58,6 @@
  if HAVE_DBUS
  if ENABLE_COMPAT_LIBDNS_SD
  
---- /usr/tmp/clean/avahi-0.6.12/avahi-dnsconfd/Makefile.am	2005-09-25 21:34:48.000000000 +0100
-+++ avahi-0.6.12/avahi-dnsconfd/Makefile.am	2006-08-22 09:39:43.587928000 +0100
-@@ -28,9 +28,6 @@
- 	-DAVAHI_SOCKET=\"$(avahi_socket)\" \
- 	-DAVAHI_DNSCONF_SCRIPT=\"$(pkgsysconfdir)/avahi-dnsconfd.action\"
- 
--# This cool debug trap works on i386/gcc only
--AM_CFLAGS+='-DDEBUG_TRAP=__asm__("int $$3")'
--
- sbin_PROGRAMS = avahi-dnsconfd
- 
- avahi_dnsconfd_SOURCES = main.c 
 --- /usr/tmp/clean/avahi-0.6.12/avahi-daemon/Makefile.am	2006-03-01 23:51:22.000000000 +0000
 +++ avahi-0.6.12/avahi-daemon/Makefile.am	2006-08-22 09:40:28.041468000 +0100
 @@ -19,9 +19,6 @@
@@ -169,3 +145,31 @@
  timeeventq_test_SOURCES = \
  	timeeventq-test.c \
  	timeeventq.h timeeventq.c \
++--- /usr/tmp/clean/avahi-0.6.28/avahi-discover-standalone/Makefile.am	2010-08-
+26 01:51:39.004153001 +0100
+++++ avahi-0.6.28/avahi-discover-standalone/Makefile.am	2011-01-20 15:30:29.0964
+42076 +0000
++@@ -20,9 +20,6 @@
++ interfaces = \
++         avahi-discover.ui
++ 
++-# This cool debug trap works on i386/gcc only
++-AM_CFLAGS+='-DDEBUG_TRAP=__asm__("int $$3")'
++-
++ if HAVE_GTK2OR3
++ if HAVE_GLIB
++ bin_PROGRAMS = \
++--- /usr/tmp/clean/avahi-0.6.28/avahi-dnsconfd/Makefile.am	2010-08-26 01:51
+:39.005153001 +0100
+++++ avahi-0.6.28/avahi-dnsconfd/Makefile.am	2011-01-20 15:32:22.328800575 +0
+000
++@@ -28,9 +28,6 @@
++ 	-DAVAHI_SOCKET=\"$(avahi_socket)\" \
++ 	-DAVAHI_DNSCONF_SCRIPT=\"$(pkgsysconfdir)/avahi-dnsconfd.action\"
++ 
++-# This cool debug trap works on i386/gcc only
++-AM_CFLAGS+='-DDEBUG_TRAP=__asm__("int $$3")'
++-
++ sbin_PROGRAMS = avahi-dnsconfd
++ 
++ avahi_dnsconfd_SOURCES = main.c
--- a/patches/avahi-15-secure-dbus-dest.diff	Fri Jan 21 09:04:27 2011 +0000
+++ b/patches/avahi-15-secure-dbus-dest.diff	Fri Jan 21 14:18:17 2011 +0000
@@ -1,7 +1,6 @@
-diff -ruN avahi-0.6.25.orig/avahi-daemon/avahi-dbus.conf.in avahi-0.6.25/avahi-daemon/avahi-dbus.conf.in
---- avahi-0.6.25.orig/avahi-daemon/avahi-dbus.conf.in	2009-07-28 14:29:41.471839972 +0100
-+++ avahi-0.6.25/avahi-daemon/avahi-dbus.conf.in	2009-07-28 14:31:32.248188859 +0100
-@@ -20,9 +20,4 @@
+--- /usr/tmp/clean/avahi-0.6.28/avahi-daemon/avahi-dbus.conf.in	2010-08-26 01:51:38.996153000 +0100
++++ avahi-0.6.28/avahi-daemon/avahi-dbus.conf.in	2011-01-20 15:42:21.930449367 +0000
+@@ -20,11 +20,6 @@
            send_interface="org.freedesktop.Avahi.Server" send_member="SetHostName"/>
    </policy>
  
@@ -10,4 +9,6 @@
 -    <allow send_destination="org.freedesktop.Avahi"/>
 -    <allow receive_sender="org.freedesktop.Avahi"/>
 -  </policy>
- </busconfig>
+   <policy user="root">
+     <allow send_destination="org.freedesktop.Avahi"/>
+     <allow receive_sender="org.freedesktop.Avahi"/>
--- a/specs/SUNWavahi-bridge-dsd.spec	Fri Jan 21 09:04:27 2011 +0000
+++ b/specs/SUNWavahi-bridge-dsd.spec	Fri Jan 21 14:18:17 2011 +0000
@@ -137,17 +137,11 @@
 %{_datadir}/applications/bssh.desktop
 %{_datadir}/applications/bvnc.desktop
 %endif
-%{_datadir}/avahi/interfaces/avahi-discover.glade
-%{_datadir}/avahi/introspection/Server.introspect
-%{_datadir}/avahi/introspection/EntryGroup.introspect
-%{_datadir}/avahi/introspection/DomainBrowser.introspect
-%{_datadir}/avahi/introspection/ServiceBrowser.introspect
-%{_datadir}/avahi/introspection/ServiceTypeBrowser.introspect
-%{_datadir}/avahi/introspection/ServiceResolver.introspect
-%{_datadir}/avahi/introspection/AddressResolver.introspect
-%{_datadir}/avahi/introspection/HostNameResolver.introspect
-%{_datadir}/avahi/introspection/RecordBrowser.introspect
+%{_datadir}/avahi/interfaces/avahi-discover.ui
 %{_datadir}/avahi/avahi-service.dtd
+%{_datadir}/dbus-1/interfaces/*
+%{_datadir}/gir-1.0/*
+%{_libdir}/girepository-1.0/*
 %dir %attr (0755, root, bin) %{_mandir}
 %{_mandir}/man1/*
 %attr (-, root, bin) %{_libdir}/python*
@@ -179,6 +173,8 @@
 %endif
 
 %changelog
+* Fri Jan 21 2011 - [email protected]
+- Update to 0.6.28.
 * Thu Dec  2 2010 - [email protected]
 - Add dependency on SUNWdbus.
 * Wed Nov 10 2010 - [email protected]