Avahi 0.6 patch by Diego 'Flameeyes' Pettenò flameeyes at gentoo d0t org
authorClément Stenac <zorglub@videolan.org>
Sun, 4 Dec 2005 11:54:22 +0000 (11:54 +0000)
committerClément Stenac <zorglub@videolan.org>
Sun, 4 Dec 2005 11:54:22 +0000 (11:54 +0000)
Thanks.

configure.ac
modules/access_output/bonjour.c
modules/services_discovery/bonjour.c

index 07c3ced..f03b7e1 100644 (file)
@@ -4542,8 +4542,10 @@ AC_ARG_ENABLE(bonjour,
   [  --enable-bonjour        Bonjour services discovery (default enabled)])
 if test "${enable_bonjour}" != "no"
 then
-  PKG_CHECK_MODULES(BONJOUR, avahi-client >= 0.3 avahi-client < 0.6,
-    [AC_DEFINE(HAVE_AVAHI_CLIENT, [], [Define if you have the avahi-client library])
+  PKG_CHECK_MODULES(BONJOUR, avahi-client >= 0.3,
+    [PKG_CHECK_MODULES(BONJOUR, avahi-client >= 0.6,
+       [AC_DEFINE(HAVE_AVAHI_06, [], [Define if you have avahi-client 0.6 or greater])],)
+      AC_DEFINE(HAVE_AVAHI_CLIENT, [], [Define if you have the avahi-client library])
       VLC_ADD_LDFLAGS([bonjour access_output_http],[$BONJOUR_LIBS])
       VLC_ADD_CFLAGS([bonjour access_output_http],[$BONJOUR_CFLAGS])
       VLC_ADD_PLUGINS([bonjour]) ],
index 40374ab..34663d3 100644 (file)
 #include <vlc/sout.h>
 
 #include <avahi-client/client.h>
+#ifdef HAVE_AVAHI_06
+# include <avahi-client/publish.h>
+# include <avahi-client/lookup.h>
+#endif
 #include <avahi-common/alternative.h>
 #include <avahi-common/simple-watch.h>
 #include <avahi-common/malloc.h>
@@ -114,7 +118,11 @@ static int create_service( bonjour_t *p_sys )
     }
 
     error = avahi_entry_group_add_service( p_sys->group, AVAHI_IF_UNSPEC,
+#ifdef HAVE_AVAHI_06
+                                           AVAHI_PROTO_UNSPEC, 0, p_sys->psz_name,
+#else
                                            AVAHI_PROTO_UNSPEC, p_sys->psz_name,
+#endif
                                            p_sys->psz_stype, NULL, NULL,
                                            p_sys->i_port,
                                            p_sys->psz_txt, NULL );
@@ -155,7 +163,12 @@ static void client_callback( AvahiClient *c,
         if( p_sys->group != NULL )
             avahi_entry_group_reset( p_sys->group );
     }
+#ifdef HAVE_AVAHI_06
+    else if( state == AVAHI_CLIENT_FAILURE &&
+              (avahi_client_errno(c) == AVAHI_ERR_DISCONNECTED) )
+#else
     else if( state == AVAHI_CLIENT_DISCONNECTED )
+#endif
     {
         msg_Err( p_sys->p_log, "avahi client disconnected" );
         avahi_simple_poll_quit( p_sys->simple_poll );
@@ -221,6 +234,9 @@ void *bonjour_start_service( vlc_object_t *p_log, char *psz_stype,
     }
 
     p_sys->client = avahi_client_new( avahi_simple_poll_get(p_sys->simple_poll),
+#ifdef HAVE_AVAHI_06
+                                      0,
+#endif
                                       client_callback, p_sys, &err );
     if( p_sys->client == NULL )
     {
index 2e8d1bf..b7d208f 100644 (file)
 #include <vlc/intf.h>
 
 #include <avahi-client/client.h>
+#ifdef HAVE_AVAHI_06
+# include <avahi-client/publish.h>
+# include <avahi-client/lookup.h>
+#endif
 #include <avahi-common/simple-watch.h>
 #include <avahi-common/malloc.h>
 #include <avahi-common/error.h>
@@ -82,7 +86,12 @@ static void client_callback( AvahiClient *c, AvahiClientState state,
     services_discovery_t *p_sd = ( services_discovery_t* )userdata;
     services_discovery_sys_t *p_sys = p_sd->p_sys;
 
+#ifdef HAVE_AVAHI_06
+    if( state == AVAHI_CLIENT_FAILURE &&
+        (avahi_client_errno(c) == AVAHI_ERR_DISCONNECTED) )
+#else
     if( state == AVAHI_CLIENT_DISCONNECTED )
+#endif
     {
         msg_Err( p_sd, "avahi client disconnected" );
         avahi_simple_poll_quit( p_sys->simple_poll );
@@ -104,12 +113,19 @@ static void resolve_callback(
     const AvahiAddress *address,
     uint16_t port,
     AvahiStringList *txt,
+#ifdef HAVE_AVAHI_06
+    AvahiLookupResultFlags flags,
+#endif
     void* userdata )
 {
     services_discovery_t *p_sd = ( services_discovery_t* )userdata;
     services_discovery_sys_t *p_sys = p_sd->p_sys;
 
+#ifdef HAVE_AVAHI_06
+    if( event == AVAHI_RESOLVER_FAILURE )
+#else
     if( event == AVAHI_RESOLVER_TIMEOUT )
+#endif
     {
         msg_Err( p_sd,
                  "failed to resolve service '%s' of type '%s' in domain '%s'",
@@ -186,6 +202,9 @@ static void browse_callback(
     const char *name,
     const char *type,
     const char *domain,
+#ifdef HAVE_AVAHI_06
+    AvahiLookupResultFlags flags,
+#endif
     void* userdata )
 {
     services_discovery_t *p_sd = ( services_discovery_t* )userdata;
@@ -195,6 +214,9 @@ static void browse_callback(
     {
         if( avahi_service_resolver_new( p_sys->client, interface, protocol,
                                         name, type, domain, AVAHI_PROTO_UNSPEC,
+#ifdef HAVE_AVAHI_06
+                                        0,
+#endif
                                         resolve_callback, userdata ) == NULL )
         {
             msg_Err( p_sd, "failed to resolve service '%s': %s", name,
@@ -246,6 +268,9 @@ static int Open( vlc_object_t *p_this )
     }
 
     p_sys->client = avahi_client_new( avahi_simple_poll_get(p_sys->simple_poll),
+#ifdef HAVE_AVAHI_06
+                                      0,
+#endif
                                       client_callback, p_sd, &err );
     if( p_sys->client == NULL )
     {
@@ -257,6 +282,9 @@ static int Open( vlc_object_t *p_this )
     p_sys->sb = avahi_service_browser_new( p_sys->client, AVAHI_IF_UNSPEC,
                                            AVAHI_PROTO_UNSPEC,
                                            "_vlc-http._tcp", NULL,
+#ifdef HAVE_AVAHI_06
+                                           0,
+#endif
                                            browse_callback, p_sd );
     if( p_sys->sb == NULL )
     {