mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 07:17:44 +00:00
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:
parent
b17e610e1f
commit
220c4e85b3
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user