[vlc-devel] [PATCH] upnp: add basic network interface discovery for iOS and tvOS

Alexandre Janniaux ajanni at videolabs.io
Mon Jul 6 11:41:37 CEST 2020


(you probably want to mention that it's for 3.0 though).

What is expected for 4.0?

Regards,
--
Alexandre Janniaux
Videolabs

On Mon, Jul 06, 2020 at 11:37:46AM +0200, Alexandre Janniaux wrote:
> Hi,
>
> I have a few remarks below, but patch LGTM after that.
>
> On Fri, Jul 03, 2020 at 12:59:50PM +0200, Felix Paul Kühne wrote:
> > From: Felix Paul Kühne <felix at feepk.net>
> >
> > ---
> >  modules/services_discovery/upnp.cpp | 33 +++++++++++++++++++++++++++--
> >  1 file changed, 31 insertions(+), 2 deletions(-)
> >
> > diff --git a/modules/services_discovery/upnp.cpp b/modules/services_discovery/upnp.cpp
> > index 13c1eb7971..c9cd08f053 100644
> > --- a/modules/services_discovery/upnp.cpp
> > +++ b/modules/services_discovery/upnp.cpp
> > @@ -1621,9 +1621,38 @@ inline char *getPreferedAdapter()
> >  }
> >  #else
> >
> > -static char *getPreferedAdapter()
> > +inline bool necessaryFlagsSetOnInterface(struct ifaddrs *anInterface)
> >  {
> > -    return NULL;
> > +    unsigned int flags = anInterface->ifa_flags;
> > +    if( (flags & IFF_UP) && (flags & IFF_RUNNING) && !(flags & IFF_LOOPBACK) && !(flags & IFF_POINTOPOINT) ) {
>
> Do you also need IFF_MULTICAST?
>
> > +        return true;
> > +    }
> > +    return false;
> > +}
> > +
> > +inline char *getPreferedAdapter()
> > +{
> > +    struct ifaddrs *listOfInterfaces = NULL;
> > +    struct ifaddrs *anInterface = NULL;
>
> Could be left uninitialized in order to warn if it gets
> used without calling the correct function/assignation in
> future refactoring.
>
> > +    int ret = getifaddrs(&listOfInterfaces);
> > +    char *adapterName = NULL;
> > +
> > +    if (ret == 0) {
>
> Could be changed into
>
>     if (ret != 0)
>         return NULL
>
> Especially to avoid calling freeifaddr on NULL or
> uninitialized memory, and remove an indentation level.
>
> > +        anInterface = listOfInterfaces;
> > +
> > +        while (anInterface != NULL) {
> > +            bool ret = necessaryFlagsSetOnInterface(anInterface);
> > +            if (ret) {
> > +                adapterName = strdup(anInterface->ifa_name);
> > +                break;
> > +            }
> > +
> > +            anInterface = anInterface->ifa_next;
> > +        }
> > +    }
> > +    freeifaddrs(listOfInterfaces);
> > +
> > +    return adapterName;
> >  }
> >
> >  #endif
> > --
> > 2.21.1 (Apple Git-122.3)
> >
> > _______________________________________________
> > vlc-devel mailing list
> > To unsubscribe or modify your subscription options:
> > https://mailman.videolan.org/listinfo/vlc-devel
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list