diff --git a/src/core/net/udp6.cpp b/src/core/net/udp6.cpp index 9bebf8eb4..e9443e8f9 100644 --- a/src/core/net/udp6.cpp +++ b/src/core/net/udp6.cpp @@ -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(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(mTransport)->GetEphemeralPort(); + } + messageInfoLocal.SetSockPort(GetSockName().mPort); + SuccessOrExit(error = static_cast(mTransport)->SendDatagram(aMessage, messageInfoLocal, kProtoUdp)); exit: