Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libupnp for openSUSE:Factory checked in at 2023-03-31 21:15:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libupnp (Old) and /work/SRC/openSUSE:Factory/.libupnp.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "libupnp" Fri Mar 31 21:15:10 2023 rev:33 rq:1075563 version:1.14.16 Changes: -------- --- /work/SRC/openSUSE:Factory/libupnp/libupnp.changes 2022-11-20 19:46:55.433206569 +0100 +++ /work/SRC/openSUSE:Factory/.libupnp.new.31432/libupnp.changes 2023-03-31 21:15:11.702301675 +0200 @@ -1,0 +2,6 @@ +Thu Mar 30 13:29:07 UTC 2023 - Jan Engelhardt <jengelh@inai.de> + +- Update to release 1.14.16 + * Fix memory leak and ActionExAsync + +------------------------------------------------------------------- Old: ---- libupnp-1.14.15.tar.bz2 New: ---- libupnp-1.14.16.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libupnp.spec ++++++ --- /var/tmp/diff_new_pack.wztr8U/_old 2023-03-31 21:15:12.210303486 +0200 +++ /var/tmp/diff_new_pack.wztr8U/_new 2023-03-31 21:15:12.218303515 +0200 @@ -1,7 +1,7 @@ # # spec file for package libupnp # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # Copyright (c) 2011, Sascha Peilicke <saschpe@gmx.de> # # All modifications and additions to the file contributed by third parties @@ -20,7 +20,7 @@ %define pnpver 17 %define ixmlver 11 Name: libupnp -Version: 1.14.15 +Version: 1.14.16 Release: 0 Summary: An implementation of Universal Plug and Play (UPnP) License: BSD-3-Clause ++++++ libupnp-1.14.15.tar.bz2 -> libupnp-1.14.16.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/ChangeLog new/libupnp-1.14.16/ChangeLog --- old/libupnp-1.14.15/ChangeLog 2022-11-19 03:18:45.000000000 +0100 +++ new/libupnp-1.14.16/ChangeLog 2023-03-30 14:55:23.000000000 +0200 @@ -9,6 +9,63 @@ Aborted. ******************************************************************************* +Version 1.14.16 +******************************************************************************* + +2023-03-19 philippe44 <philippe44@users.noreply.github.com> + + Fix memory leak and ActionExAsync (#426) + + This intends to fix #424. I've found at least 2 memory leaks + + 1- When sending Action(Ex)Async + The ActionRequest document was not released nor was the ActionResult. + I initially tought that this should be done in + UpnpActionComplete::UpnpActionComplete_delete() but I was wrong because + ActionRequest and ActionResult do not "belong" to the Evt object. + The sets methods only set a pointer and modifying generator.c is not the + right solution. The reason is that ActionRequest "belongs" to the ACTION + job and should be handled as such if we want as well that, when the job + is cancelled, the memory is released as well. So I've change the + free_func for ACTION to reflect that. + + 2- When using event subscription + The Event was not released upon Timer termination. So I've done as + above, created a special free_func that handles that properly. + + In general, when something prevents the execution/submission of a job, + I've also used the actual free function instead of duplicating the + individual free(). Note that when terminating a timer, I'm using the + job's internal structure free_func() as it was already used to access + arg. One can argue that it should be an opaque structure and get/set or + the option to call the free function could be use instead. + + Also, I realized that ActionExAsync has never been working properly + because when the job is executed, only an Action is made, never an + ActionEx although the Header document is in the job's argument. I've + fixed that as well and stopped there to not go too deep in that rabbit + hole. + + I've also removed the upnp_timeout.c/h files as they were not used + anymore (and had a strange names anyway) + +2023-01-04 Thoren Paulson <thoren.paulson@gmail.com> + + Handle redundant initialization + +2022-12-22 Thoren Paulson <thoren.paulson@gmail.com> + + Clean up after failed initialization. + + Some initialization failures (such as failure in UpnpGetIfInfo) would + leave resources like thread pools initialized. This change ensures if + UpnpInit2 fails, we call UpnpFinish before returning to clean up those + resources. + + To ensure UpnpFinish is effective in this way, we set UpnpSdkInit to 1 + earlier in UpnpInit2. + +******************************************************************************* Version 1.14.15 ******************************************************************************* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/Makefile.in new/libupnp-1.14.16/Makefile.in --- old/libupnp-1.14.15/Makefile.in 2022-11-19 03:24:18.000000000 +0100 +++ new/libupnp-1.14.16/Makefile.in 2023-03-30 14:57:59.000000000 +0200 @@ -210,7 +210,7 @@ $(top_srcdir)/upnp/inc/upnpconfig.h.in \ $(top_srcdir)/upnp/sample/common/config_sample.h.in COPYING \ ChangeLog README.md THANKS build-aux/ar-lib build-aux/compile \ - build-aux/config.guess build-aux/config.sub build-aux/depcomp \ + build-aux/config.guess build-aux/config.sub \ build-aux/install-sh build-aux/ltmain.sh build-aux/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/README.md new/libupnp-1.14.16/README.md --- old/libupnp-1.14.15/README.md 2022-11-19 03:21:29.000000000 +0100 +++ new/libupnp-1.14.16/README.md 2023-03-30 14:55:23.000000000 +0200 @@ -102,7 +102,8 @@ | -------------- | ---------- | ---------------------------------------- | | 1.18.0 | TBA ? | [Portable UPnP SDK][Portable UPnP SDK] | | 1.16.0 | aborted | [Portable UPnP SDK][Portable UPnP SDK] | -| 1.14.16 | TBA | [Portable UPnP SDK][Portable UPnP SDK] | +| 1.14.17 | TBA | [Portable UPnP SDK][Portable UPnP SDK] | +| 1.14.16 | 2023-03-30 | [Portable UPnP SDK][Portable UPnP SDK] | | 1.14.15 | 2022-11-18 | [Portable UPnP SDK][Portable UPnP SDK] | | 1.14.14 | 2022-10-05 | [Portable UPnP SDK][Portable UPnP SDK] | | 1.14.13 | 2022-08-03 | [Portable UPnP SDK][Portable UPnP SDK] | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/THANKS new/libupnp-1.14.16/THANKS --- old/libupnp-1.14.15/THANKS 2022-10-05 19:49:53.000000000 +0200 +++ new/libupnp-1.14.16/THANKS 2023-03-30 14:55:23.000000000 +0200 @@ -57,7 +57,7 @@ - Leuk_He - Loigu - Luke Kim (nereusuj) -- Marcelo Roberto Jimenez (mroberto) +- Marcelo Roberto Jimenez (mroberto, mrjimenez at github) - Markus Strobl - Marvin Scholz (ePirat at Github) - Matthew Garrett (mjg59) @@ -72,7 +72,7 @@ - Peng - Peter Hartley - Peter Pramberger (peterpramb) -- Philippe (philippe44ca) +- Philippe (philippe44 at github) - Philipp Matthias Hahn - Pino Toscano (pinotree) - Rene Hexel @@ -89,11 +89,12 @@ - Siva Chandran - Stefan Sommerfeld (zerocom) - St��phane Corth��sy -- Stephen Anthony Jones (frobones at gmail.com) +- Stephen Anthony Jones (frobones at gmail dot com) - Stephen Bash (scbash at Github) - Steve Bresson - Thijs Schreijer - Thomas Mitterfellner (lineinthesand at Github) +- Thoren Paulson (Thoren dot Paulson at gmail dot com, thoren-d at github) - Timothy Redaelli - Titus Winters - Tom (tomdev2) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/configure new/libupnp-1.14.16/configure --- old/libupnp-1.14.15/configure 2022-11-19 03:24:19.000000000 +0100 +++ new/libupnp-1.14.16/configure 2023-03-30 14:57:58.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for libupnp 1.14.15. +# Generated by GNU Autoconf 2.71 for libupnp 1.14.16. # # Report bugs to <mroberto@users.sourceforge.net>. # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='libupnp' PACKAGE_TARNAME='libupnp' -PACKAGE_VERSION='1.14.15' -PACKAGE_STRING='libupnp 1.14.15' +PACKAGE_VERSION='1.14.16' +PACKAGE_STRING='libupnp 1.14.16' PACKAGE_BUGREPORT='mroberto@users.sourceforge.net' PACKAGE_URL='' @@ -1434,7 +1434,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libupnp 1.14.15 to adapt to many kinds of systems. +\`configure' configures libupnp 1.14.16 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1505,7 +1505,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libupnp 1.14.15:";; + short | recursive ) echo "Configuration of libupnp 1.14.16:";; esac cat <<\_ACEOF @@ -1652,7 +1652,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libupnp configure 1.14.15 +libupnp configure 1.14.16 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2008,7 +2008,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libupnp $as_me 1.14.15, which was +It was created by libupnp $as_me 1.14.16, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -2766,7 +2766,7 @@ LT_VERSION_IXML=12:2:1 -LT_VERSION_UPNP=18:6:1 +LT_VERSION_UPNP=18:7:1 @@ -3288,7 +3288,7 @@ # Define the identity of the package. PACKAGE='libupnp' - VERSION='1.14.15' + VERSION='1.14.16' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -17722,7 +17722,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libupnp $as_me 1.14.15, which was +This file was extended by libupnp $as_me 1.14.16, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17790,7 +17790,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libupnp config.status 1.14.15 +libupnp config.status 1.14.16 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/configure.ac new/libupnp-1.14.16/configure.ac --- old/libupnp-1.14.15/configure.ac 2022-11-19 03:24:08.000000000 +0100 +++ new/libupnp-1.14.16/configure.ac 2022-11-19 03:28:44.000000000 +0100 @@ -9,7 +9,7 @@ AC_PREREQ(2.60) -AC_INIT([libupnp], [1.14.15], [mroberto@users.sourceforge.net]) +AC_INIT([libupnp], [1.14.16], [mroberto@users.sourceforge.net]) dnl ############################################################################ dnl # *Independently* of the above libupnp package version, the libtool version dnl # of the 3 libraries need to be updated whenever there is a change released: @@ -209,8 +209,18 @@ dnl #AC_SUBST([LT_VERSION_UPNP], [18:6:1]) dnl # dnl ############################################################################ +dnl # Release 1.14.16 +dnl # "current:revision:age" +dnl # +dnl # - Code has changed in upnp +dnl # revision: 6 -> 7 +dnl # +dnl #AC_SUBST([LT_VERSION_IXML], [12:2:1]) +dnl #AC_SUBST([LT_VERSION_UPNP], [18:7:1]) +dnl # +dnl ############################################################################ AC_SUBST([LT_VERSION_IXML], [12:2:1]) -AC_SUBST([LT_VERSION_UPNP], [18:6:1]) +AC_SUBST([LT_VERSION_UPNP], [18:7:1]) dnl ############################################################################ dnl # Repeating the algorithm to place it closer to the modificatin place: dnl # - library code modified: revision++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/docs/Doxyfile new/libupnp-1.14.16/docs/Doxyfile --- old/libupnp-1.14.15/docs/Doxyfile 2022-10-05 19:49:53.000000000 +0200 +++ new/libupnp-1.14.16/docs/Doxyfile 2022-11-19 03:29:29.000000000 +0100 @@ -38,7 +38,7 @@ # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.14.15 +PROJECT_NUMBER = 1.14.16 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/libupnp.spec new/libupnp-1.14.16/libupnp.spec --- old/libupnp-1.14.15/libupnp.spec 2022-10-05 19:49:53.000000000 +0200 +++ new/libupnp-1.14.16/libupnp.spec 2022-11-19 03:29:49.000000000 +0100 @@ -1,4 +1,4 @@ -Version: 1.14.15 +Version: 1.14.16 Summary: Universal Plug and Play (UPnP) SDK Name: libupnp-1.14 Release: 1%{?dist} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/CMakeLists.txt new/libupnp-1.14.16/upnp/CMakeLists.txt --- old/libupnp-1.14.15/upnp/CMakeLists.txt 2022-08-03 16:14:24.000000000 +0200 +++ new/libupnp-1.14.16/upnp/CMakeLists.txt 2023-03-20 02:24:51.000000000 +0100 @@ -35,7 +35,6 @@ src/genlib/util/list.c src/genlib/util/membuffer.c src/genlib/util/strintmap.c - src/genlib/util/upnp_timeout.c src/genlib/util/util.c src/threadutil/FreeList.c src/threadutil/LinkedList.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/Makefile.am new/libupnp-1.14.16/upnp/Makefile.am --- old/libupnp-1.14.15/upnp/Makefile.am 2022-08-03 16:14:24.000000000 +0200 +++ new/libupnp-1.14.16/upnp/Makefile.am 2023-03-20 02:24:51.000000000 +0100 @@ -83,7 +83,6 @@ src/inc/sysdep.h \ src/inc/unixutil.h \ src/inc/upnpapi.h \ - src/inc/upnp_timeout.h \ src/inc/uri.h \ src/inc/urlconfig.h \ src/inc/upnputil.h \ @@ -134,7 +133,6 @@ src/genlib/service_table/service_table.c \ src/genlib/util/membuffer.c \ src/genlib/util/strintmap.c \ - src/genlib/util/upnp_timeout.c \ src/genlib/util/util.c \ src/genlib/util/list.c \ src/genlib/net/sock.c \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/Makefile.in new/libupnp-1.14.16/upnp/Makefile.in --- old/libupnp-1.14.15/upnp/Makefile.in 2022-11-19 03:24:19.000000000 +0100 +++ new/libupnp-1.14.16/upnp/Makefile.in 2023-03-30 14:57:59.000000000 +0200 @@ -206,14 +206,14 @@ src/inc/service_table.h src/inc/soaplib.h src/inc/sock.h \ src/inc/statcodes.h src/inc/strintmap.h src/inc/ssdplib.h \ src/inc/sysdep.h src/inc/unixutil.h src/inc/upnpapi.h \ - src/inc/upnp_timeout.h src/inc/uri.h src/inc/urlconfig.h \ - src/inc/upnputil.h src/inc/uuid.h src/inc/VirtualDir.h \ - src/inc/webserver.h src/threadutil/FreeList.h \ - src/threadutil/FreeList.c src/threadutil/LinkedList.h \ - src/threadutil/LinkedList.c src/threadutil/ThreadPool.h \ - src/threadutil/ThreadPool.c src/threadutil/TimerThread.h \ - src/threadutil/TimerThread.c src/ssdp/SSDPResultData.c \ - src/ssdp/SSDPResultData.h src/ssdp/SSDPResultDataCallback.c \ + src/inc/uri.h src/inc/urlconfig.h src/inc/upnputil.h \ + src/inc/uuid.h src/inc/VirtualDir.h src/inc/webserver.h \ + src/threadutil/FreeList.h src/threadutil/FreeList.c \ + src/threadutil/LinkedList.h src/threadutil/LinkedList.c \ + src/threadutil/ThreadPool.h src/threadutil/ThreadPool.c \ + src/threadutil/TimerThread.h src/threadutil/TimerThread.c \ + src/ssdp/SSDPResultData.c src/ssdp/SSDPResultData.h \ + src/ssdp/SSDPResultDataCallback.c \ src/ssdp/SSDPResultDataCallback.h src/ssdp/ssdp_device.c \ src/ssdp/ssdp_ctrlpt.c src/ssdp/ssdp_server.c \ src/soap/soap_device.c src/soap/soap_ctrlpt.c \ @@ -222,9 +222,8 @@ src/genlib/client_table/GenlibClientSubscription.c \ src/genlib/service_table/service_table.c \ src/genlib/util/membuffer.c src/genlib/util/strintmap.c \ - src/genlib/util/upnp_timeout.c src/genlib/util/util.c \ - src/genlib/util/list.c src/genlib/net/sock.c \ - src/genlib/net/http/httpparser.c \ + src/genlib/util/util.c src/genlib/util/list.c \ + src/genlib/net/sock.c src/genlib/net/http/httpparser.c \ src/genlib/net/http/httpreadwrite.c \ src/genlib/net/http/statcodes.c \ src/genlib/net/http/webserver.c \ @@ -268,7 +267,6 @@ src/genlib/service_table/libupnp_la-service_table.lo \ src/genlib/util/libupnp_la-membuffer.lo \ src/genlib/util/libupnp_la-strintmap.lo \ - src/genlib/util/libupnp_la-upnp_timeout.lo \ src/genlib/util/libupnp_la-util.lo \ src/genlib/util/libupnp_la-list.lo \ src/genlib/net/libupnp_la-sock.lo \ @@ -363,7 +361,6 @@ src/genlib/util/$(DEPDIR)/libupnp_la-list.Plo \ src/genlib/util/$(DEPDIR)/libupnp_la-membuffer.Plo \ src/genlib/util/$(DEPDIR)/libupnp_la-strintmap.Plo \ - src/genlib/util/$(DEPDIR)/libupnp_la-upnp_timeout.Plo \ src/genlib/util/$(DEPDIR)/libupnp_la-util.Plo \ src/soap/$(DEPDIR)/libupnp_la-soap_common.Plo \ src/soap/$(DEPDIR)/libupnp_la-soap_ctrlpt.Plo \ @@ -831,21 +828,20 @@ src/inc/service_table.h src/inc/soaplib.h src/inc/sock.h \ src/inc/statcodes.h src/inc/strintmap.h src/inc/ssdplib.h \ src/inc/sysdep.h src/inc/unixutil.h src/inc/upnpapi.h \ - src/inc/upnp_timeout.h src/inc/uri.h src/inc/urlconfig.h \ - src/inc/upnputil.h src/inc/uuid.h src/inc/VirtualDir.h \ - src/inc/webserver.h src/threadutil/FreeList.h \ - src/threadutil/FreeList.c src/threadutil/LinkedList.h \ - src/threadutil/LinkedList.c src/threadutil/ThreadPool.h \ - src/threadutil/ThreadPool.c src/threadutil/TimerThread.h \ - src/threadutil/TimerThread.c $(am__append_3) $(am__append_4) \ + src/inc/uri.h src/inc/urlconfig.h src/inc/upnputil.h \ + src/inc/uuid.h src/inc/VirtualDir.h src/inc/webserver.h \ + src/threadutil/FreeList.h src/threadutil/FreeList.c \ + src/threadutil/LinkedList.h src/threadutil/LinkedList.c \ + src/threadutil/ThreadPool.h src/threadutil/ThreadPool.c \ + src/threadutil/TimerThread.h src/threadutil/TimerThread.c \ + $(am__append_3) $(am__append_4) \ src/genlib/miniserver/miniserver.c \ src/genlib/client_table/client_table.c \ src/genlib/client_table/GenlibClientSubscription.c \ src/genlib/service_table/service_table.c \ src/genlib/util/membuffer.c src/genlib/util/strintmap.c \ - src/genlib/util/upnp_timeout.c src/genlib/util/util.c \ - src/genlib/util/list.c src/genlib/net/sock.c \ - src/genlib/net/http/httpparser.c \ + src/genlib/util/util.c src/genlib/util/list.c \ + src/genlib/net/sock.c src/genlib/net/http/httpparser.c \ src/genlib/net/http/httpreadwrite.c \ src/genlib/net/http/statcodes.c \ src/genlib/net/http/webserver.c \ @@ -1031,9 +1027,6 @@ src/genlib/util/libupnp_la-strintmap.lo: \ src/genlib/util/$(am__dirstamp) \ src/genlib/util/$(DEPDIR)/$(am__dirstamp) -src/genlib/util/libupnp_la-upnp_timeout.lo: \ - src/genlib/util/$(am__dirstamp) \ - src/genlib/util/$(DEPDIR)/$(am__dirstamp) src/genlib/util/libupnp_la-util.lo: src/genlib/util/$(am__dirstamp) \ src/genlib/util/$(DEPDIR)/$(am__dirstamp) src/genlib/util/libupnp_la-list.lo: src/genlib/util/$(am__dirstamp) \ @@ -1253,7 +1246,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@src/genlib/util/$(DEPDIR)/libupnp_la-list.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/genlib/util/$(DEPDIR)/libupnp_la-membuffer.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/genlib/util/$(DEPDIR)/libupnp_la-strintmap.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@src/genlib/util/$(DEPDIR)/libupnp_la-upnp_timeout.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/genlib/util/$(DEPDIR)/libupnp_la-util.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/soap/$(DEPDIR)/libupnp_la-soap_common.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/soap/$(DEPDIR)/libupnp_la-soap_ctrlpt.Plo@am__quote@ # am--include-marker @@ -1432,13 +1424,6 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libupnp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/genlib/util/libupnp_la-strintmap.lo `test -f 'src/genlib/util/strintmap.c' || echo '$(srcdir)/'`src/genlib/util/strintmap.c -src/genlib/util/libupnp_la-upnp_timeout.lo: src/genlib/util/upnp_timeout.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libupnp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/genlib/util/libupnp_la-upnp_timeout.lo -MD -MP -MF src/genlib/util/$(DEPDIR)/libupnp_la-upnp_timeout.Tpo -c -o src/genlib/util/libupnp_la-upnp_timeout.lo `test -f 'src/genlib/util/upnp_timeout.c' || echo '$(srcdir)/'`src/genlib/util/upnp_timeout.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/genlib/util/$(DEPDIR)/libupnp_la-upnp_timeout.Tpo src/genlib/util/$(DEPDIR)/libupnp_la-upnp_timeout.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/genlib/util/upnp_timeout.c' object='src/genlib/util/libupnp_la-upnp_timeout.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libupnp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/genlib/util/libupnp_la-upnp_timeout.lo `test -f 'src/genlib/util/upnp_timeout.c' || echo '$(srcdir)/'`src/genlib/util/upnp_timeout.c - src/genlib/util/libupnp_la-util.lo: src/genlib/util/util.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libupnp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/genlib/util/libupnp_la-util.lo -MD -MP -MF src/genlib/util/$(DEPDIR)/libupnp_la-util.Tpo -c -o src/genlib/util/libupnp_la-util.lo `test -f 'src/genlib/util/util.c' || echo '$(srcdir)/'`src/genlib/util/util.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/genlib/util/$(DEPDIR)/libupnp_la-util.Tpo src/genlib/util/$(DEPDIR)/libupnp_la-util.Plo @@ -2175,7 +2160,6 @@ -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-list.Plo -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-membuffer.Plo -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-strintmap.Plo - -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-upnp_timeout.Plo -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-util.Plo -rm -f src/soap/$(DEPDIR)/libupnp_la-soap_common.Plo -rm -f src/soap/$(DEPDIR)/libupnp_la-soap_ctrlpt.Plo @@ -2275,7 +2259,6 @@ -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-list.Plo -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-membuffer.Plo -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-strintmap.Plo - -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-upnp_timeout.Plo -rm -f src/genlib/util/$(DEPDIR)/libupnp_la-util.Plo -rm -f src/soap/$(DEPDIR)/libupnp_la-soap_common.Plo -rm -f src/soap/$(DEPDIR)/libupnp_la-soap_ctrlpt.Plo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/src/api/upnpapi.c new/libupnp-1.14.16/upnp/src/api/upnpapi.c --- old/libupnp-1.14.15/upnp/src/api/upnpapi.c 2022-08-03 16:14:24.000000000 +0200 +++ new/libupnp-1.14.16/upnp/src/api/upnpapi.c 2023-03-20 02:25:07.000000000 +0100 @@ -239,6 +239,42 @@ SSL_CTX *gSslCtx = NULL; #endif +typedef union +{ + struct + { + int handle; + int eventId; + void *Event; + } advertise; + struct UpnpNonblockParam action; +} job_arg; + +/*! + * \brief Free memory associated with advertise job's argument + */ +static void free_advertise_arg(job_arg *arg) +{ + if (arg->advertise.Event) { + free(arg->advertise.Event); + } + free(arg); +} + +/*! + * \brief Free memory associated with an action job's argument + */ +static void free_action_arg(job_arg *arg) +{ + if (arg->action.Header) { + ixmlDocument_free(arg->action.Header); + } + if (arg->action.Act) { + ixmlDocument_free(arg->action.Act); + } + free(arg); +} + /*! * \brief (Windows Only) Initializes the Windows Winsock library. * @@ -511,6 +547,10 @@ goto exit_function; } + /* Set the UpnpSdkInit flag to 1 to indicate we're successfully + * initialized. */ + UpnpSdkInit = 1; + /* Perform initialization preamble. */ retVal = UpnpInitPreamble(); if (retVal != UPNP_E_SUCCESS) { @@ -531,18 +571,16 @@ goto exit_function; } - /* Set the UpnpSdkInit flag to 1 to indicate we're successfully - * initialized. */ - UpnpSdkInit = 1; - /* Finish initializing the SDK. */ retVal = UpnpInitStartServers(DestPort); if (retVal != UPNP_E_SUCCESS) { - UpnpSdkInit = 0; goto exit_function; } exit_function: + if (retVal != UPNP_E_SUCCESS && retVal != UPNP_E_INIT) { + UpnpFinish(); + } ithread_mutex_unlock(&gSDKInitMutex); return retVal; @@ -1892,7 +1930,7 @@ { struct Handle_Info *SInfo = NULL; int retVal = 0, *ptrMx; - upnp_timeout *adEvent; + job_arg *adEvent; ThreadPoolJob job; memset(&job, 0, sizeof(job)); @@ -1940,15 +1978,15 @@ ptrMx = (int *)malloc(sizeof(int)); if (ptrMx == NULL) return UPNP_E_OUTOF_MEMORY; - adEvent = (upnp_timeout *)malloc(sizeof(upnp_timeout)); + adEvent = (job_arg *)malloc(sizeof(job_arg)); if (adEvent == NULL) { free(ptrMx); return UPNP_E_OUTOF_MEMORY; } *ptrMx = Exp; - adEvent->handle = Hnd; - adEvent->Event = ptrMx; + adEvent->advertise.handle = Hnd; + adEvent->advertise.Event = ptrMx; HandleLock(); switch (GetHandleInfo(Hnd, &SInfo)) { @@ -1962,32 +2000,30 @@ } #ifdef SSDP_PACKET_DISTRIBUTE TPJobInit(&job, (start_routine)AutoAdvertise, adEvent); - TPJobSetFreeFunction(&job, (free_routine)free_upnp_timeout); + TPJobSetFreeFunction(&job, (free_routine)free_advertise_arg); TPJobSetPriority(&job, MED_PRIORITY); if ((retVal = TimerThreadSchedule(&gTimerThread, ((Exp / 2) - (AUTO_ADVERTISEMENT_TIME)), REL_SEC, &job, SHORT_TERM, - &(adEvent->eventId))) != UPNP_E_SUCCESS) { + &(adEvent->advertise.eventId))) != UPNP_E_SUCCESS) { HandleUnlock(); - free(adEvent); - free(ptrMx); + free_advertise_arg(adEvent); return retVal; } #else TPJobInit(&job, (start_routine)AutoAdvertise, adEvent); - TPJobSetFreeFunction(&job, (free_routine)free_upnp_timeout); + TPJobSetFreeFunction(&job, (free_routine)free_advertise_arg); TPJobSetPriority(&job, MED_PRIORITY); if ((retVal = TimerThreadSchedule(&gTimerThread, Exp - AUTO_ADVERTISEMENT_TIME, REL_SEC, &job, SHORT_TERM, - &(adEvent->eventId))) != UPNP_E_SUCCESS) { + &(adEvent->advertise.eventId))) != UPNP_E_SUCCESS) { HandleUnlock(); - free(adEvent); - free(ptrMx); + free_advertise_arg(adEvent); return retVal; } #endif @@ -3026,11 +3062,11 @@ Param->Fun = Fun; TPJobInit(&job, (start_routine)UpnpThreadDistribution, Param); - TPJobSetFreeFunction(&job, (free_routine)free); + TPJobSetFreeFunction(&job, (free_routine)free_action_arg); TPJobSetPriority(&job, MED_PRIORITY); if (ThreadPoolAdd(&gSendThreadPool, &job, NULL) != 0) { - free(Param); + free_action_arg((job_arg *)Param); } UpnpPrintf(UPNP_ALL, @@ -3155,11 +3191,11 @@ Param->Fun = Fun; TPJobInit(&job, (start_routine)UpnpThreadDistribution, Param); - TPJobSetFreeFunction(&job, (free_routine)free); + TPJobSetFreeFunction(&job, (free_routine)free_action_arg); TPJobSetPriority(&job, MED_PRIORITY); if (ThreadPoolAdd(&gSendThreadPool, &job, NULL) != 0) { - free(Param); + free_action_arg((job_arg *)Param); } UpnpPrintf(UPNP_ALL, @@ -4026,17 +4062,27 @@ case ACTION: { UpnpActionComplete *Evt = UpnpActionComplete_new(); IXML_Document *actionResult = NULL; - int errCode = SoapSendAction(Param->Url, - Param->ServiceType, - Param->Act, - &actionResult); + int errCode; + if (Param->Header) { + errCode = SoapSendActionEx(Param->Url, + Param->ServiceType, + Param->Header, + Param->Act, + &actionResult); + } else { + errCode = SoapSendAction(Param->Url, + Param->ServiceType, + Param->Act, + &actionResult); + } UpnpActionComplete_set_ErrCode(Evt, errCode); UpnpActionComplete_set_ActionRequest(Evt, Param->Act); UpnpActionComplete_set_ActionResult(Evt, actionResult); UpnpActionComplete_strcpy_CtrlUrl(Evt, Param->Url); Param->Fun(UPNP_CONTROL_ACTION_COMPLETE, Evt, Param->Cookie); - free(Param); UpnpActionComplete_delete(Evt); + ixmlDocument_free(actionResult); + free_action_arg((job_arg *)Param); break; } case STATUS: { @@ -4251,10 +4297,11 @@ #if EXCLUDE_SSDP == 0 void AutoAdvertise(void *input) { - upnp_timeout *event = (upnp_timeout *)input; + job_arg *arg = (job_arg *)input; - UpnpSendAdvertisement(event->handle, *((int *)event->Event)); - free_upnp_timeout(event); + UpnpSendAdvertisement( + arg->advertise.handle, *((int *)arg->advertise.Event)); + free_advertise_arg(arg); } #endif /* EXCLUDE_SSDP == 0 */ #endif /* INCLUDE_DEVICE_APIS */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/src/gena/gena_ctrlpt.c new/libupnp-1.14.16/upnp/src/gena/gena_ctrlpt.c --- old/libupnp-1.14.15/upnp/src/gena/gena_ctrlpt.c 2022-08-03 16:14:24.000000000 +0200 +++ new/libupnp-1.14.16/upnp/src/gena/gena_ctrlpt.c 2023-03-20 02:24:51.000000000 +0100 @@ -53,16 +53,36 @@ extern ithread_mutex_t GlobalClientSubscribeMutex; +typedef struct +{ + int handle; + int eventId; + void *Event; +} job_arg; + +/*! + * \brief Free memory associated with job's argument + */ +static void free_subscribe_arg(job_arg *arg) +{ + if (arg) { + if (arg->Event) { + UpnpEventSubscribe_delete(arg->Event); + } + free(arg); + } +} + /*! * \brief This is a thread function to send the renewal just before the * subscription times out. */ static void GenaAutoRenewSubscription( - /*! [in] Thread data(upnp_timeout *) needed to send the renewal. */ + /*! [in] Thread data(job_arg *) needed to send the renewal. */ void *input) { - upnp_timeout *event = (upnp_timeout *)input; - UpnpEventSubscribe *sub_struct = (UpnpEventSubscribe *)event->Event; + job_arg *arg = (job_arg *)input; + UpnpEventSubscribe *sub_struct = (UpnpEventSubscribe *)arg->Event; void *cookie; Upnp_FunPtr callback_fun; struct Handle_Info *handle_info; @@ -84,7 +104,7 @@ UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, "GENA AUTO RENEW"); timeout = UpnpEventSubscribe_get_TimeOut(sub_struct); - errCode = genaRenewSubscription(event->handle, + errCode = genaRenewSubscription(arg->handle, UpnpEventSubscribe_get_SID(sub_struct), &timeout); UpnpEventSubscribe_set_ErrCode(sub_struct, errCode); @@ -98,9 +118,9 @@ if (send_callback) { HandleReadLock(); - if (GetHandleInfo(event->handle, &handle_info) != HND_CLIENT) { + if (GetHandleInfo(arg->handle, &handle_info) != HND_CLIENT) { HandleUnlock(); - free_upnp_timeout(event); + free_subscribe_arg(arg); goto end_function; } UpnpPrintf( @@ -110,10 +130,10 @@ callback_fun = handle_info->Callback; cookie = handle_info->Cookie; HandleUnlock(); - callback_fun(eventType, event->Event, cookie); + callback_fun(eventType, arg->Event, cookie); } - free_upnp_timeout(event); + free_subscribe_arg(arg); end_function: return; @@ -133,8 +153,8 @@ /*! [in] Subscription being renewed. */ GenlibClientSubscription *sub) { - UpnpEventSubscribe *RenewEventStruct = NULL; - upnp_timeout *RenewEvent = NULL; + UpnpEventSubscribe *RenewEvent = NULL; + job_arg *arg = NULL; int return_code = GENA_SUCCESS; ThreadPoolJob job; @@ -145,34 +165,33 @@ goto end_function; } - RenewEventStruct = UpnpEventSubscribe_new(); - if (RenewEventStruct == NULL) { + RenewEvent = UpnpEventSubscribe_new(); + if (RenewEvent == NULL) { return_code = UPNP_E_OUTOF_MEMORY; goto end_function; } - RenewEvent = (upnp_timeout *)malloc(sizeof(upnp_timeout)); - if (RenewEvent == NULL) { - free(RenewEventStruct); + arg = (job_arg *)malloc(sizeof(job_arg)); + if (arg == NULL) { + free(RenewEvent); return_code = UPNP_E_OUTOF_MEMORY; goto end_function; } - memset(RenewEvent, 0, sizeof(upnp_timeout)); + memset(arg, 0, sizeof(job_arg)); /* schedule expire event */ - UpnpEventSubscribe_set_ErrCode(RenewEventStruct, UPNP_E_SUCCESS); - UpnpEventSubscribe_set_TimeOut(RenewEventStruct, TimeOut); + UpnpEventSubscribe_set_ErrCode(RenewEvent, UPNP_E_SUCCESS); + UpnpEventSubscribe_set_TimeOut(RenewEvent, TimeOut); UpnpEventSubscribe_set_SID( - RenewEventStruct, GenlibClientSubscription_get_SID(sub)); + RenewEvent, GenlibClientSubscription_get_SID(sub)); UpnpEventSubscribe_set_PublisherUrl( - RenewEventStruct, GenlibClientSubscription_get_EventURL(sub)); + RenewEvent, GenlibClientSubscription_get_EventURL(sub)); - /* RenewEvent->EventType=UPNP_EVENT_SUBSCRIPTION_EXPIRE; */ - RenewEvent->handle = client_handle; - RenewEvent->Event = RenewEventStruct; + arg->handle = client_handle; + arg->Event = RenewEvent; - TPJobInit(&job, (start_routine)GenaAutoRenewSubscription, RenewEvent); - TPJobSetFreeFunction(&job, (free_routine)free_upnp_timeout); + TPJobInit(&job, (start_routine)GenaAutoRenewSubscription, arg); + TPJobSetFreeFunction(&job, (free_routine)free_subscribe_arg); TPJobSetPriority(&job, MED_PRIORITY); /* Schedule the job */ @@ -181,14 +200,13 @@ REL_SEC, &job, SHORT_TERM, - &(RenewEvent->eventId)); + &(arg->eventId)); if (return_code != UPNP_E_SUCCESS) { - free(RenewEvent); - free(RenewEventStruct); + free_subscribe_arg(arg); goto end_function; } - GenlibClientSubscription_set_RenewEventId(sub, RenewEvent->eventId); + GenlibClientSubscription_set_RenewEventId(sub, arg->eventId); return_code = GENA_SUCCESS; @@ -665,7 +683,7 @@ if (TimerThreadRemove(&gTimerThread, GenlibClientSubscription_get_RenewEventId(sub), &tempJob) == 0) { - free_upnp_timeout((upnp_timeout *)tempJob.arg); + tempJob.free_func(tempJob.arg); } UpnpPrintf(UPNP_INFO, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/src/genlib/client_table/client_table.c new/libupnp-1.14.16/upnp/src/genlib/client_table/client_table.c --- old/libupnp-1.14.15/upnp/src/genlib/client_table/client_table.c 2022-08-03 16:14:24.000000000 +0200 +++ new/libupnp-1.14.16/upnp/src/genlib/client_table/client_table.c 2023-03-20 02:24:51.000000000 +0100 @@ -16,7 +16,6 @@ void free_client_subscription(GenlibClientSubscription *sub) { - upnp_timeout *event; ThreadPoolJob tempJob; if (sub) { int renewEventId = @@ -29,8 +28,7 @@ if (TimerThreadRemove(&gTimerThread, renewEventId, &tempJob) == 0) { - event = (upnp_timeout *)tempJob.arg; - free_upnp_timeout(event); + tempJob.free_func(tempJob.arg); } } GenlibClientSubscription_set_RenewEventId(sub, -1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/src/genlib/util/upnp_timeout.c new/libupnp-1.14.16/upnp/src/genlib/util/upnp_timeout.c --- old/libupnp-1.14.15/upnp/src/genlib/util/upnp_timeout.c 2022-08-03 16:14:24.000000000 +0200 +++ new/libupnp-1.14.16/upnp/src/genlib/util/upnp_timeout.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,53 +0,0 @@ -/******************************************************************************* - * - * Copyright (c) 2000-2003 Intel Corporation - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither name of Intel Corporation nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ******************************************************************************/ - -/*! - * \file - * - * \brief Contains a function for freeing the memory associated with a upnp - * time out event. - */ - -#include "config.h" - -#include "upnp_timeout.h" - -#include <stdlib.h> /* for free() */ - -void free_upnp_timeout(upnp_timeout *event) -{ - if (event) { - if (event->Event) { - free(event->Event); - } - free(event); - } -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/src/inc/client_table.h new/libupnp-1.14.16/upnp/src/inc/client_table.h --- old/libupnp-1.14.15/upnp/src/inc/client_table.h 2022-08-03 16:14:24.000000000 +0200 +++ new/libupnp-1.14.16/upnp/src/inc/client_table.h 2023-03-20 02:24:51.000000000 +0100 @@ -15,7 +15,6 @@ #include "UpnpString.h" #include "service_table.h" #include "upnp.h" -#include "upnp_timeout.h" #include "uri.h" #include <stdio.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libupnp-1.14.15/upnp/src/inc/upnp_timeout.h new/libupnp-1.14.16/upnp/src/inc/upnp_timeout.h --- old/libupnp-1.14.15/upnp/src/inc/upnp_timeout.h 2022-08-03 16:14:24.000000000 +0200 +++ new/libupnp-1.14.16/upnp/src/inc/upnp_timeout.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,57 +0,0 @@ -/******************************************************************************* - * - * Copyright (c) 2000-2003 Intel Corporation - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - Neither name of Intel Corporation nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ******************************************************************************/ - -#ifndef UPNPTIMEOUT_H -#define UPNPTIMEOUT_H - -/*! - * \file - */ - -/*! - * The upnp_timeout structure definition. - */ -typedef struct UPNP_TIMEOUT -{ - int EventType; - int handle; - int eventId; - void *Event; -} upnp_timeout; - -/*! - * \brief Free memory associated with event and memory for any sub-elements. - */ -void free_upnp_timeout( - /*! [in] Event which needs to be freed. */ - upnp_timeout *event); - -#endif /* UPNPTIMEOUT_H */