Просмотр исходного кода

Release memory previously allocated by UPNP_GetValidIGD

Joseph Henry 2 лет назад
Родитель
Сommit
fdc2e0f692
1 измененных файлов с 5 добавлено и 2 удалено
  1. 5 2
      osdep/PortMapper.cpp

+ 5 - 2
osdep/PortMapper.cpp

@@ -207,7 +207,8 @@ public:
 					memset(&data,0,sizeof(data));
 					OSUtils::ztsnprintf(inport,sizeof(inport),"%d",localPort);
 
-					if ((UPNP_GetValidIGD(devlist,&urls,&data,lanaddr,sizeof(lanaddr)))&&(lanaddr[0])) {
+					int foundValidIGD = 0;
+					if ((foundValidIGD = UPNP_GetValidIGD(devlist,&urls,&data,lanaddr,sizeof(lanaddr)))&&(lanaddr[0])) {
 #ifdef ZT_PORTMAPPER_TRACE
                         PM_TRACE("PortMapper: UPnP: my LAN IP address: %s" ZT_EOL_S,lanaddr);
 #endif
@@ -282,9 +283,11 @@ public:
                         PM_TRACE("PortMapper: UPnP: UPNP_GetValidIGD failed, returning to NAT-PMP mode" ZT_EOL_S);
 #endif
 					}
-
 					freeUPNPDevlist(devlist);
 
+					if(foundValidIGD) {
+						FreeUPNPUrls(&urls);
+					}
 				} else {
 					mode = 0;
 #ifdef ZT_PORTMAPPER_TRACE