From: Praveen K Paladugu Date: Fri, 11 Oct 2024 18:13:11 +0000 (-0500) Subject: ch: explicitly set INFILESIZE to 0 X-Git-Tag: v10.10.0-rc1~119 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5904676d2f018139afc1119017b9d60a3959cea2;p=thirdparty%2Flibvirt.git ch: explicitly set INFILESIZE to 0 While sending API requests that don't need any body, explicitly set CURLOPT_INFILESIZE to 0. Without this option, curl sends a chunked request with `Expect: 100-continue` header. The client, in this case curl, expects a response from the server, ch in this case, to respond within a timeout period. If guest definition has a PCI passthrough device configuration, cloud-hypervisor process cannot respond within above mentioned timeout. Even if cloud-hypervisor responds after the timeout, curl cannot read the response. Because of this, virsh request to create a guest, hangs. This only happens while using "mshv" hypervisor. By setting CURLOPT_INFILESIZE to O, curl drops the Expect header and sychronously waits for server to respond. Signed-off-by: Praveen K Paladugu Reviewed-by: Michal Privoznik --- diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c index 935239a721..690aea37c8 100644 --- a/src/ch/ch_monitor.c +++ b/src/ch/ch_monitor.c @@ -685,6 +685,7 @@ virCHMonitorPutNoContent(virCHMonitor *mon, const char *endpoint) curl_easy_setopt(mon->handle, CURLOPT_URL, url); curl_easy_setopt(mon->handle, CURLOPT_UPLOAD, 1L); curl_easy_setopt(mon->handle, CURLOPT_HTTPHEADER, NULL); + curl_easy_setopt(mon->handle, CURLOPT_INFILESIZE, 0L); responseCode = virCHMonitorCurlPerform(mon->handle);