[UDP] Remove thread-unsafe reference counting (#20535)
diff --git a/src/inet/UDPEndPointImplLwIP.cpp b/src/inet/UDPEndPointImplLwIP.cpp
index d5e9056..32b10c6 100644
--- a/src/inet/UDPEndPointImplLwIP.cpp
+++ b/src/inet/UDPEndPointImplLwIP.cpp
@@ -371,20 +371,15 @@
pktInfo->DestPort = pcb->local_port;
}
- ep->Retain();
+ // TODO: add thread-safe reference counting for UDP endpoints
CHIP_ERROR err = ep->GetSystemLayer().ScheduleLambda([ep, p = System::LwIPPacketBufferView::UnsafeGetLwIPpbuf(buf)] {
ep->HandleDataReceived(System::PacketBufferHandle::Adopt(p));
- ep->Release();
});
if (err == CHIP_NO_ERROR)
{
// If ScheduleLambda() succeeded, it has ownership of the buffer, so we need to release it (without freeing it).
static_cast<void>(std::move(buf).UnsafeRelease());
}
- else
- {
- ep->Release();
- }
}
CHIP_ERROR UDPEndPointImplLwIP::SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
diff --git a/src/inet/UDPEndPointImplOpenThread.cpp b/src/inet/UDPEndPointImplOpenThread.cpp
index 02f11ba..2f78e80 100644
--- a/src/inet/UDPEndPointImplOpenThread.cpp
+++ b/src/inet/UDPEndPointImplOpenThread.cpp
@@ -98,18 +98,15 @@
}
payload->SetDataLength(static_cast<uint16_t>(msgLen));
- ep->Retain();
- auto * buf = std::move(payload).UnsafeRelease();
- CHIP_ERROR err = ep->GetSystemLayer().ScheduleLambda([ep, buf] {
- ep->HandleDataReceived(System::PacketBufferHandle::Adopt(buf));
- ep->Release();
- });
+ // TODO: add thread-safe reference counting for UDP endpoints
+ auto * buf = std::move(payload).UnsafeRelease();
+ CHIP_ERROR err =
+ ep->GetSystemLayer().ScheduleLambda([ep, buf] { ep->HandleDataReceived(System::PacketBufferHandle::Adopt(buf)); });
if (err != CHIP_NO_ERROR)
{
// Make sure we properly clean up buf and ep, since our lambda will not
// run.
payload = System::PacketBufferHandle::Adopt(buf);
- ep->Release();
}
}