mirror of
https://github.com/espressif/openthread.git
synced 2026-07-29 23:27:46 +00:00
[udp] verify destination before binding (#3055)
This commit is contained in:
+11
-11
@@ -102,17 +102,6 @@ otError UdpSocket::SendTo(Message &aMessage, const MessageInfo &aMessageInfo)
|
||||
|
||||
messageInfoLocal = aMessageInfo;
|
||||
|
||||
if (messageInfoLocal.GetSockAddr().IsUnspecified())
|
||||
{
|
||||
messageInfoLocal.SetSockAddr(GetSockName().GetAddress());
|
||||
}
|
||||
|
||||
if (GetSockName().mPort == 0)
|
||||
{
|
||||
GetSockName().mPort = static_cast<Udp *>(mTransport)->GetEphemeralPort();
|
||||
}
|
||||
messageInfoLocal.SetSockPort(GetSockName().mPort);
|
||||
|
||||
if (messageInfoLocal.GetPeerAddr().IsUnspecified())
|
||||
{
|
||||
VerifyOrExit(!GetPeerName().GetAddress().IsUnspecified(), error = OT_ERROR_INVALID_ARGS);
|
||||
@@ -126,6 +115,17 @@ otError UdpSocket::SendTo(Message &aMessage, const MessageInfo &aMessageInfo)
|
||||
messageInfoLocal.mPeerPort = GetPeerName().mPort;
|
||||
}
|
||||
|
||||
if (messageInfoLocal.GetSockAddr().IsUnspecified())
|
||||
{
|
||||
messageInfoLocal.SetSockAddr(GetSockName().GetAddress());
|
||||
}
|
||||
|
||||
if (GetSockName().mPort == 0)
|
||||
{
|
||||
GetSockName().mPort = static_cast<Udp *>(mTransport)->GetEphemeralPort();
|
||||
}
|
||||
messageInfoLocal.SetSockPort(GetSockName().mPort);
|
||||
|
||||
SuccessOrExit(error = static_cast<Udp *>(mTransport)->SendDatagram(aMessage, messageInfoLocal, kProtoUdp));
|
||||
|
||||
exit:
|
||||
|
||||
Reference in New Issue
Block a user