From 025aa722daacdb095b1533e9e1f38a2b33ca1ea8 Mon Sep 17 00:00:00 2001 From: Wojciech Bober Date: Tue, 20 Sep 2016 18:02:09 +0200 Subject: [PATCH] Initialize mTransport field of otUdpSocket. (#571) (#623) This commit changes otOpenUdpSocket() and otCloseUdpSocket() to initialize and clear mTransport filed of otUdpSocket, respecitvely. --- src/core/openthread.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/core/openthread.cpp b/src/core/openthread.cpp index f5654882f..3f119f343 100644 --- a/src/core/openthread.cpp +++ b/src/core/openthread.cpp @@ -1204,14 +1204,34 @@ int otWriteMessage(otMessage aMessage, uint16_t aOffset, const void *aBuf, uint1 ThreadError otOpenUdpSocket(otInstance *, otUdpSocket *aSocket, otUdpReceive aCallback, void *aCallbackContext) { + ThreadError error = kThreadError_Busy; Ip6::UdpSocket *socket = reinterpret_cast(aSocket); - return socket->Open(aCallback, aCallbackContext); + + if (socket->mTransport == NULL) + { + socket->mTransport = &sIp6->mUdp; + error = socket->Open(aCallback, aCallbackContext); + } + + return error; } ThreadError otCloseUdpSocket(otUdpSocket *aSocket) { + ThreadError error = kThreadError_InvalidState; Ip6::UdpSocket *socket = reinterpret_cast(aSocket); - return socket->Close(); + + if (socket->mTransport != NULL) + { + error = socket->Close(); + + if (error == kThreadError_None) + { + socket->mTransport = NULL; + } + } + + return error; } ThreadError otBindUdpSocket(otUdpSocket *aSocket, otSockAddr *aSockName)