If one these four functions fail (virStreamRecvAll,
virStreamSendAll, virStreamSparseRecvAll, virStreamSparseSendAll)
the stream is aborted by calling virStreamAbort(). This is a
public API; therefore, the first thing it does is error reset. At
that point any error that caused us to abort stream in the first
place is gone.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
VIR_FREE(bytes);
if (ret != 0) {
+ virErrorPtr orig_err = virSaveLastError();
virStreamAbort(stream);
+ if (orig_err) {
+ virSetError(orig_err);
+ virFreeError(orig_err);
+ }
virDispatchError(stream->conn);
}
VIR_FREE(bytes);
if (ret != 0) {
+ virErrorPtr orig_err = virSaveLastError();
virStreamAbort(stream);
+ if (orig_err) {
+ virSetError(orig_err);
+ virFreeError(orig_err);
+ }
virDispatchError(stream->conn);
}
VIR_FREE(bytes);
if (ret != 0) {
+ virErrorPtr orig_err = virSaveLastError();
virStreamAbort(stream);
+ if (orig_err) {
+ virSetError(orig_err);
+ virFreeError(orig_err);
+ }
virDispatchError(stream->conn);
}
VIR_FREE(bytes);
if (ret != 0) {
+ virErrorPtr orig_err = virSaveLastError();
virStreamAbort(stream);
+ if (orig_err) {
+ virSetError(orig_err);
+ virFreeError(orig_err);
+ }
virDispatchError(stream->conn);
}