[vlc-devel] [PATCH] avahi: remove AvahiServiceBrowser from sys

Petri Hintukainen phintuka at gmail.com
Tue Mar 8 10:52:56 CET 2016


On ti, 2016-03-08 at 11:46 +0200, Petri Hintukainen wrote:
> Only last created service browser was stored.
> avahi_client_free() should free also all service browsers.
> ---
>  modules/services_discovery/avahi.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/modules/services_discovery/avahi.c
> b/modules/services_discovery/avahi.c
> index ee91afd..cff96de 100644
> --- a/modules/services_discovery/avahi.c
> +++ b/modules/services_discovery/avahi.c
> @@ -71,7 +71,6 @@ struct services_discovery_sys_t
>  {
>      AvahiThreadedPoll   *poll;
>      AvahiClient         *client;
> -    AvahiServiceBrowser *sb;
>      vlc_dictionary_t    services_name_to_input_item;
>  };
>  
> @@ -232,6 +231,7 @@ static void browse_callback(
>      VLC_UNUSED(flags);
>      services_discovery_t *p_sd = ( services_discovery_t* )userdata;
>      services_discovery_sys_t *p_sys = p_sd->p_sys;
> +fprintf(stderr, "AVAHI: %s %s %s\n", name, type, domain);
>      if( event == AVAHI_BROWSER_NEW )
>      {
>          if( avahi_service_resolver_new( p_sys->client, interface,
> protocol,
> 

Ignore this chunk ...

> @@ -295,11 +295,12 @@ static int Open( vlc_object_t *p_this )
>  
>      for( unsigned i = 0; i < NB_PROTOCOLS; i++ )
>      {
> -        p_sys->sb = avahi_service_browser_new( p_sys->client,
> AVAHI_IF_UNSPEC,
> +        AvahiServiceBrowser *sb;
> +        sb = avahi_service_browser_new( p_sys->client,
> AVAHI_IF_UNSPEC,
>                  AVAHI_PROTO_UNSPEC,
>                  protocols[i].psz_service_name, NULL,
>                  0, browse_callback, p_sd );
> -        if( p_sys->sb == NULL )
> +        if( sb == NULL )
>          {
>              msg_Err( p_sd, "failed to create avahi service browser
> %s", avahi_strerror( avahi_client_errno(p_sys->client) ) );
>              goto error;
> @@ -311,8 +312,6 @@ static int Open( vlc_object_t *p_this )
>      return VLC_SUCCESS;
>  
>  error:
> -    if( p_sys->sb != NULL )
> -        avahi_service_browser_free( p_sys->sb );
>      if( p_sys->client != NULL )
>          avahi_client_free( p_sys->client );
>      if( p_sys->poll != NULL )
> @@ -336,7 +335,6 @@ static void Close( vlc_object_t *p_this )
>      services_discovery_sys_t *p_sys = p_sd->p_sys;
>      avahi_threaded_poll_stop( p_sys->poll );
>  
> -    avahi_service_browser_free( p_sys->sb );
>      avahi_client_free( p_sys->client );
>      avahi_threaded_poll_free( p_sys->poll );
>  


More information about the vlc-devel mailing list