]> xenbits.xensource.com Git - libvirt.git/commitdiff
virnetmessage: Introduce virNetMessageClearFDs
authorPeter Krempa <pkrempa@redhat.com>
Thu, 17 Feb 2022 16:07:39 +0000 (17:07 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 1 Mar 2022 12:29:49 +0000 (13:29 +0100)
The helper splits out the clearing of the FDs transacted inside a
virNetMessage.

APIs transacting FDs both from and to the client at the same time will
need to clear the FDs stored in virNetMessage as the structure is
re-used for the reply and without clearing the list of FDs we'd return
the FDs sent by the client in addition to the new FDs sent by the API.t

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/libvirt_remote.syms
src/rpc/virnetmessage.c
src/rpc/virnetmessage.h

index 2fa46e5e0cd625628b9a00beda20c034ef823a45..f0f90815cf352d2a5c49a91d4140283498cbd2d6 100644 (file)
@@ -102,6 +102,7 @@ virNetDaemonUpdateServices;
 # rpc/virnetmessage.h
 virNetMessageAddFD;
 virNetMessageClear;
+virNetMessageClearFDs;
 virNetMessageClearPayload;
 virNetMessageDecodeHeader;
 virNetMessageDecodeLength;
index ca11f1688eee20f7ef7d3b3f1d7e51a954ffa592..221da7c59b302c591a7072e20a5a5c2c78dad6d0 100644 (file)
@@ -48,7 +48,7 @@ virNetMessage *virNetMessageNew(bool tracked)
 
 
 void
-virNetMessageClearPayload(virNetMessage *msg)
+virNetMessageClearFDs(virNetMessage *msg)
 {
     size_t i;
 
@@ -58,6 +58,13 @@ virNetMessageClearPayload(virNetMessage *msg)
     msg->donefds = 0;
     msg->nfds = 0;
     VIR_FREE(msg->fds);
+}
+
+
+void
+virNetMessageClearPayload(virNetMessage *msg)
+{
+    virNetMessageClearFDs(msg);
 
     msg->bufferOffset = 0;
     msg->bufferLength = 0;
index aadf1b69b0cf896bde76d2b031f3882303f8a634..8f878962f8e1f41311931c5c269a9ee0d10186bb 100644 (file)
@@ -49,6 +49,7 @@ struct _virNetMessage {
 
 virNetMessage *virNetMessageNew(bool tracked);
 
+void virNetMessageClearFDs(virNetMessage *msg);
 void virNetMessageClearPayload(virNetMessage *msg);
 
 void virNetMessageClear(virNetMessage *);