1、copy libupnp到其他地方再copy回来,编译发现报错
解决方法:在libupnp-1.8.4库根目录执行
autoreconf -ivf
然后再make就没有问题了(注意执行了autoreconf -ivf以后之前对configure的修改就会恢复)
2、libupnp存在内存泄漏
这个问题的修改方法是:
首先在upnp_timeout.c里面加一个函数,内存泄漏的主要原因就是free(event->Event);必不能彻底回收所有资源,需要用UpnpEventSubscribe_delete(event->Event);
其次下面几处调用需要修改:
gena_ctrlpt.c中的函数GenaAutoRenewSubscription
gena_ctrlpt.c中的函数ScheduleGenaAutoRenew
gena_ctrlpt.c中的函数genaRenewSubscription
3、UPNP如果在UpnpSendAction或者UpnpDownloadXmlDoc的时候程序退出,会卡主很久(大约30-120s)
修改方法:
./upnp/src/inc/upnpapi.h:69:#define UPNP_TIMEOUT 2 (将30修改成2)
./upnp/src/inc/httpreadwrite.h:47:#define HTTP_DEFAULT_TIMEOUT 2 (将30修改成2)
将configure文件中的UPNP_ENABLE_BLOCKING_TCP_CONNECTIONS注释掉。
#if test "x$enable_blocking_tcp_connections" = xyes ; then
#$as_echo "#define UPNP_ENABLE_BLOCKING_TCP_CONNECTIONS 1" >>confdefs.h
#fi