Commit e8367901 authored by Clément Stenac's avatar Clément Stenac

Backport of [13520]

parent 923c835c
......@@ -4299,8 +4299,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]) ],
......
......@@ -33,6 +33,10 @@
#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 )
{
......
......@@ -30,6 +30,10 @@
#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 )
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment