Mercurial > hg > bitcoin
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;