virNetClientRemoveStream;
virNetClientSendNonBlock;
virNetClientSendNoReply;
+virNetClientSendStream;
virNetClientSendWithReply;
-virNetClientSendWithReplyStream;
virNetClientSetCloseCallback;
virNetClientSetTLSSession;
/*
* @msg: a message allocated on heap or stack
*
- * Send a message synchronously, and wait for the reply synchronously
+ * Send a message synchronously, and wait for the reply synchronously if
+ * message is dummy (just to wait for incoming data) or abort/finish message.
*
* The caller is responsible for free'ing @msg if it was allocated
* on the heap
*
* Returns 0 on success, -1 on failure
*/
-int virNetClientSendWithReplyStream(virNetClientPtr client,
- virNetMessagePtr msg,
- virNetClientStreamPtr st)
+int virNetClientSendStream(virNetClientPtr client,
+ virNetMessagePtr msg,
+ virNetClientStreamPtr st)
{
int ret = -1;
+ bool expectReply = !msg->bufferLength ||
+ msg->header.status != VIR_NET_CONTINUE;
virObjectLock(client);
goto cleanup;
}
- if (virNetClientSendInternal(client, msg, true, false) < 0)
+ if (virNetClientSendInternal(client, msg, expectReply, false) < 0)
goto cleanup;
ret = 0;
int virNetClientSendNonBlock(virNetClientPtr client,
virNetMessagePtr msg);
-int virNetClientSendWithReplyStream(virNetClientPtr client,
- virNetMessagePtr msg,
- virNetClientStreamPtr st);
+int virNetClientSendStream(virNetClientPtr client,
+ virNetMessagePtr msg,
+ virNetClientStreamPtr st);
# ifdef WITH_SASL
void virNetClientSetSASLSession(virNetClientPtr client,
if (status == VIR_NET_CONTINUE) {
if (virNetMessageEncodePayloadRaw(msg, data, nbytes) < 0)
goto error;
-
- if (virNetClientSendNoReply(client, msg) < 0)
- goto error;
} else {
if (virNetMessageEncodePayloadRaw(msg, NULL, 0) < 0)
goto error;
-
- if (virNetClientSendWithReplyStream(client, msg, st) < 0)
- goto error;
}
+ if (virNetClientSendStream(client, msg, st) < 0)
+ goto error;
virNetMessageFree(msg);
VIR_DEBUG("Dummy packet to wait for stream data");
virObjectUnlock(st);
- ret = virNetClientSendWithReplyStream(client, msg, st);
+ ret = virNetClientSendStream(client, msg, st);
virObjectLock(st);
virNetMessageFree(msg);
&data) < 0)
goto cleanup;
- if (virNetClientSendNoReply(client, msg) < 0)
+ if (virNetClientSendStream(client, msg, st) < 0)
goto cleanup;
ret = 0;