[udp] verify destination before binding (#3055)

This commit is contained in:
Yakun Xu
2018-09-10 18:11:06 -10:00
committed by Jonathan Hui
parent 26fab7399d
commit d9da4c2652
+11 -11
View File
@@ -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: