rpc: Add virNetMessageClearPayload

Handles freeing the buffer and fds, but not the message details.
Use it to drop some duplicate code.
This commit is contained in:
Cole Robinson 2016-04-27 17:47:34 -04:00
parent b17e610e1f
commit 220c4e85b3

View File

@ -49,17 +49,25 @@ virNetMessagePtr virNetMessageNew(bool tracked)
}
void virNetMessageClear(virNetMessagePtr msg)
static void
virNetMessageClearPayload(virNetMessagePtr msg)
{
bool tracked = msg->tracked;
size_t i;
VIR_DEBUG("msg=%p nfds=%zu", msg, msg->nfds);
for (i = 0; i < msg->nfds; i++)
VIR_FORCE_CLOSE(msg->fds[i]);
VIR_FREE(msg->fds);
VIR_FREE(msg->buffer);
}
void virNetMessageClear(virNetMessagePtr msg)
{
bool tracked = msg->tracked;
VIR_DEBUG("msg=%p nfds=%zu", msg, msg->nfds);
virNetMessageClearPayload(msg);
memset(msg, 0, sizeof(*msg));
msg->tracked = tracked;
}
@ -67,7 +75,6 @@ void virNetMessageClear(virNetMessagePtr msg)
void virNetMessageFree(virNetMessagePtr msg)
{
size_t i;
if (!msg)
return;
@ -76,10 +83,7 @@ void virNetMessageFree(virNetMessagePtr msg)
if (msg->cb)
msg->cb(msg, msg->opaque);
for (i = 0; i < msg->nfds; i++)
VIR_FORCE_CLOSE(msg->fds[i]);
VIR_FREE(msg->buffer);
VIR_FREE(msg->fds);
virNetMessageClearPayload(msg);
VIR_FREE(msg);
}