[vlc-devel] SoC 2010: DLNA UPnP Server/Client Modules

Benjamin Zores ben at geexbox.org
Tue May 25 23:39:04 CEST 2010


2010/5/25 Rémi Denis-Courmont <remi at remlab.net>:
> Le mardi 25 mai 2010 23:32:37 David Glaude, vous avez écrit :
>> I think that is the one I assisted to. It was presented by someone from
>> Nokia working in Finland.
>> I don't remember anything but he spended a bit of time explaining upnp/dlna
>> but also the available stack he found and why he did build on GUPnP rather
>> than anything else. It might be related to the language, licence, memory
>> footprint, glib availability or specific to maemo or...
>
> I saw a similar presentation at Maemo Summit. But with unaccounted and wrong
> statements like "libupnp is bad because it spawns threads behind your back",
> and "threads are evil", I have to say, I could not take the talk very
> seriously.
>
> Threads are only evil to incompetent programmers (who can't use them
> properly).

I second this opinion, however and to be a bit more accurate, and for
having used libupnp in various projects:
- it indeed uses a lot of threads through a thread pool with is
however badly designed as many threads get stucked after a few times,
making your application no longer responsive.
- it has its own xml parser which is DOM based on consumes a lot of
RAM (much more than it should) and is not able to fully parse all
SOAP/UPnP messages correctly
- there are A LOT of memleaks (maybe a few have been corrected since
it was forked in pupnp though). In remember in 2005, having my app
talking a 1GB of RAM after a 24h server alive time.
- it doesn't support DLNA at all, nor will it ever be.
- it's raw UPnP framework only: it doesn't implement the UPnP A/V
specs at all so you'll have to recode the whole services, profiles and
so on.

It has been the very first UPnP stack in the field back in early 2000
and a lot of projects used to rely on it.
Whatever one can feel about GLib (GUPnP), Python (for Coherence) or
others, they all have been made by frustration over libupnp.

Basically, if one choose to use libupnp, he has to consider writing
more fixes for the lib than he will do for its app actually.
I really wouldn't recommend any new design to be based on this lib,
but again, it's not my call nor my project.

Ben

-- 
"My life, and by extension everyone else's is meaningless."
Bender, Futurama



More information about the vlc-devel mailing list