diff --git a/src/posix/platform/mdns_socket.cpp b/src/posix/platform/mdns_socket.cpp index 2f96ee796..2a7c15541 100644 --- a/src/posix/platform/mdns_socket.cpp +++ b/src/posix/platform/mdns_socket.cpp @@ -345,6 +345,9 @@ void MdnsSocket::ClearTxQueue(void) void MdnsSocket::SendQueuedMessages(MsgType aMsgType) { + otMessage *message; + otMessage *nextMessage; + switch (aMsgType) { case kIp6Msg: @@ -355,8 +358,7 @@ void MdnsSocket::SendQueuedMessages(MsgType aMsgType) break; } - for (otMessage *message = otMessageQueueGetHead(&mTxQueue); message != NULL; - message = otMessageQueueGetNext(&mTxQueue, message)) + for (message = otMessageQueueGetHead(&mTxQueue); message != NULL; message = nextMessage) { bool isTxPending = false; uint16_t length; @@ -367,6 +369,8 @@ void MdnsSocket::SendQueuedMessages(MsgType aMsgType) struct sockaddr_in6 addr6; struct sockaddr_in addr; + nextMessage = otMessageQueueGetNext(&mTxQueue, message); + length = otMessageGetLength(message); offset = length - sizeof(Metadata);