UPnP in libpurple

Evan Schoenberg evan.s at dreskin.net
Sat Jun 28 00:51:42 EDT 2008


You're using "UPnP" and "nat-pmp" interchangeably, I think, as  
evidenced in the quoted paragraph below.  Be careful, as they are  
entirely separate ways to approach the same problem.  UPnP is  
implemented in libpurple/upnp.c, while nat-pmp is in libpurple/nat- 
pmp.c.  Both modules are used only by libpurple/network.c.

I don't know anything about libpurple UPnP implementation in terms of  
its functionality, as my router (an Apple Airport Express) supports  
only nat-pmp.  However, both from experience and as the implementor of  
the current nat-pmp functionality, I can speak to nat-pmp.

On Jun 28, 2008, at 12:43 AM, Ryan Govostes wrote:

> The simplest way to address this is to add a relatively short timeout
> to UPnP requests. However, a better solution would be to use requests
> that are better-formed. For this, I recommend using MiniUPnP's
> libnatpmp (http://miniupnp.free.fr/libnatpmp.html), used in
> Transmission and elsewhere.
>
> The license of MiniUPnP is fairly unrestrictive and merely requires
> attribution in source and binary distributions.

libnatpmp didn't exist in its current, mature form way back when.   
It's definitely a superior implementation from what I've seen. I fully  
support replacing the nitty-gritty code in libpurple/natpmp.c with  
libnatpmp's innards.

Cheers,
Evan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://pidgin.im/pipermail/devel/attachments/20080628/0e9e769c/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 194 bytes
Desc: This is a digitally signed message part
URL: <http://pidgin.im/pipermail/devel/attachments/20080628/0e9e769c/attachment.sig>


More information about the Devel mailing list