static int
-remoteStreamFinish(virStreamPtr st)
+remoteStreamCloseInt(virStreamPtr st, bool streamAbort)
{
struct private_data *priv = st->conn->privateData;
virNetClientStreamPtr privst = st->privateData;
ret = virNetClientStreamSendPacket(privst,
priv->client,
- VIR_NET_OK,
+ streamAbort ? VIR_NET_ERROR : VIR_NET_OK,
NULL,
0);
static int
-remoteStreamAbort(virStreamPtr st)
+remoteStreamFinish(virStreamPtr st)
{
- struct private_data *priv = st->conn->privateData;
- virNetClientStreamPtr privst = st->privateData;
- int ret = -1;
-
- remoteDriverLock(priv);
-
- if (virNetClientStreamRaiseError(privst))
- goto cleanup;
-
- priv->localUses++;
- remoteDriverUnlock(priv);
-
- ret = virNetClientStreamSendPacket(privst,
- priv->client,
- VIR_NET_ERROR,
- NULL,
- 0);
-
- remoteDriverLock(priv);
- priv->localUses--;
+ return remoteStreamCloseInt(st, false);
+}
- cleanup:
- virNetClientRemoveStream(priv->client, privst);
- virObjectUnref(privst);
- st->privateData = NULL;
- st->driver = NULL;
- remoteDriverUnlock(priv);
- return ret;
+static int
+remoteStreamAbort(virStreamPtr st)
+{
+ return remoteStreamCloseInt(st, true);
}