diff options
author | Dan Helfman <witten@torsion.org> | 2011-04-16 11:35:45 -0700 |
---|---|---|
committer | Matt Corallo <matt@bluematt.me> | 2011-04-16 21:58:42 +0200 |
commit | f285d4f4f395d7a69f182ddb35ec48c8b10da2d2 (patch) | |
tree | f6b7c6a376cdde2538beafe848416f6b24bd3c89 | |
parent | 973800b52f13e993110e351ec414eed54147118d (diff) | |
download | bitcoin-f285d4f4f395d7a69f182ddb35ec48c8b10da2d2.tar.xz |
Fix for #156: UPnP segfault when no valid UPnP IGDs are found.
-rw-r--r-- | net.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -906,7 +906,8 @@ void ThreadMapPort2(void* parg) 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 @@ void ThreadMapPort2(void* parg) } else { printf("No valid UPnP IGDs found\n"); freeUPNPDevlist(devlist); devlist = 0; - FreeUPNPUrls(&urls); + if (r != 0) + FreeUPNPUrls(&urls); loop { if (fShutdown || !fUseUPnP) return; |