changeset 526:2e60a5c85358 draft

Fix for #156: UPnP segfault when no valid UPnP IGDs are found.
author Dan Helfman <witten@torsion.org>
date Sat, 16 Apr 2011 11:35:45 -0700
parents 88a05cc4c591
children c5ccd2433556
files net.cpp
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/net.cpp
+++ b/net.cpp
@@ -906,7 +906,8 @@
     struct IGDdatas data;
     int r;
 
-    if (UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)) == 1)
+    r = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr));
+    if (r == 1)
     {
         char intClient[16];
         char intPort[6];
@@ -937,7 +938,8 @@
     } else {
         printf("No valid UPnP IGDs found\n");
         freeUPNPDevlist(devlist); devlist = 0;
-        FreeUPNPUrls(&urls);
+        if (r != 0)
+            FreeUPNPUrls(&urls);
         loop {
             if (fShutdown || !fUseUPnP)
                 return;