Skip to content

Commit d45cbcb

Browse files
committed
Release referenced resources in destructor
1 parent 9515f46 commit d45cbcb

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

libraries/ESP8266SSDP/ESP8266SSDP.cpp

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,32 @@ SSDPClass::SSDPClass() :
150150
}
151151

152152
SSDPClass::~SSDPClass() {
153-
delete _timer;
153+
#ifdef DEBUG_SSDP
154+
DEBUG_SSDP.printf("SSDP end ... ");
155+
#endif
156+
if(_timer) {
157+
ETSTimer* tm = &(_timer->timer);
158+
os_timer_disarm(tm);
159+
delete _timer;
160+
}
161+
162+
if (_server) {
163+
_server->unref();
164+
_server = 0;
165+
}
166+
167+
ip_addr_t ifaddr;
168+
ifaddr.addr = WiFi.localIP();
169+
ip_addr_t multicast_addr;
170+
multicast_addr.addr = (uint32_t) SSDP_MULTICAST_ADDR;
171+
if (igmp_leavegroup(&ifaddr, &multicast_addr) != ERR_OK ) {
172+
#ifdef DEBUG_SSDP
173+
DEBUG_SSDP.printf("SSDP failed to leave igmp group\n");
174+
#endif
175+
}
176+
#ifdef DEBUG_SSDP
177+
DEBUG_SSDP.printf("ok\n");
178+
#endif
154179
}
155180

156181
bool SSDPClass::begin() {

0 commit comments

Comments
 (0)