The virStreamSourceFunc internal_sendall currently returns the first
value passed in from the block, which according the ruby-libvirt docs
should be zero:
The send block should return an array of 2 elements; the first element
should be the return code from the block (-1 for error, 0 otherwise)
But according to the libvirt docs of virStreamSourceFunc this indicates
EOF:
Returns: the number of bytes filled, 0 upon end of file, or -1 upon error
So return the size of the buffer to unbreak volume uploads.
---
ext/libvirt/stream.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ext/libvirt/stream.c b/ext/libvirt/stream.c
index 1353dc9..c171535 100644
--- a/ext/libvirt/stream.c
+++ b/ext/libvirt/stream.c
@@ -131,7 +131,7 @@ static int internal_sendall(virStreamPtr RUBY_LIBVIRT_UNUSED(st), char
*data,
memcpy(data, RSTRING_PTR(buffer), RSTRING_LEN(buffer));
- return NUM2INT(retcode);
+ return RSTRING_LEN(buffer);
}
/*
--
2.8.1