提交 31024b3d 编写于 作者: M Michal Privoznik

remote_driver: Implement VIR_STREAM_RECV_STOP_AT_HOLE

This is fairly trivial now that we have everything in place.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
上级 022705b8
...@@ -5652,7 +5652,7 @@ remoteStreamRecvFlags(virStreamPtr st, ...@@ -5652,7 +5652,7 @@ remoteStreamRecvFlags(virStreamPtr st,
virNetClientStreamPtr privst = st->privateData; virNetClientStreamPtr privst = st->privateData;
int rv; int rv;
virCheckFlags(0, -1); virCheckFlags(VIR_STREAM_RECV_STOP_AT_HOLE, -1);
if (virNetClientStreamRaiseError(privst)) if (virNetClientStreamRaiseError(privst))
return -1; return -1;
......
...@@ -468,7 +468,7 @@ int virNetClientStreamRecvPacket(virNetClientStreamPtr st, ...@@ -468,7 +468,7 @@ int virNetClientStreamRecvPacket(virNetClientStreamPtr st,
VIR_DEBUG("st=%p client=%p data=%p nbytes=%zu nonblock=%d flags=%x", VIR_DEBUG("st=%p client=%p data=%p nbytes=%zu nonblock=%d flags=%x",
st, client, data, nbytes, nonblock, flags); st, client, data, nbytes, nonblock, flags);
virCheckFlags(0, -1); virCheckFlags(VIR_STREAM_RECV_STOP_AT_HOLE, -1);
virObjectLock(st); virObjectLock(st);
...@@ -532,6 +532,13 @@ int virNetClientStreamRecvPacket(virNetClientStreamPtr st, ...@@ -532,6 +532,13 @@ int virNetClientStreamRecvPacket(virNetClientStreamPtr st,
/* Pretend holeLength zeroes was read from stream. */ /* Pretend holeLength zeroes was read from stream. */
size_t len = want; size_t len = want;
/* Yes, pretend unless we are asked not to. */
if (flags & VIR_STREAM_RECV_STOP_AT_HOLE) {
/* No error reporting here. Caller knows what they are doing. */
rv = -3;
goto cleanup;
}
if (len > st->holeLength) if (len > st->holeLength)
len = st->holeLength; len = st->holeLength;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册