[PATCH v3 4/9] ch: support poll with -1 in chSocketRecv

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



chSocketRecv fn can be used by operations such as restore, which cannot
have a specific poll timeout. The runtime of these operations at server
side (vmm) cannot be determined or capped as it depends on the guest
configuration. Hence, add a new parameter 'use_timeout' which when set
will pass -1 as timeout to poll, otherwise the default PKT_TIMEOUT_MS is
used.

Signed-off-by: Purna Pavan Chandra <paekkaladevi@xxxxxxxxxxxxxxxxxxx>
---
 src/ch/ch_process.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/ch/ch_process.c b/src/ch/ch_process.c
index 1943c4381b..851ab7545c 100644
--- a/src/ch/ch_process.c
+++ b/src/ch/ch_process.c
@@ -534,11 +534,12 @@ chMonitorSocketConnect(virCHMonitor *mon)
 #define PKT_TIMEOUT_MS 500 /* ms */
 
 static char *
-chSocketRecv(int sock)
+chSocketRecv(int sock, bool use_timeout)
 {
     struct pollfd pfds[1];
     char *buf = NULL;
     size_t buf_len = 1024;
+    int timeout = PKT_TIMEOUT_MS;
     int ret;
 
     buf = g_new0(char, buf_len);
@@ -546,8 +547,11 @@ chSocketRecv(int sock)
     pfds[0].fd = sock;
     pfds[0].events = POLLIN;
 
+    if (!use_timeout)
+        timeout = -1;
+
     do {
-        ret = poll(pfds, G_N_ELEMENTS(pfds), PKT_TIMEOUT_MS);
+        ret = poll(pfds, G_N_ELEMENTS(pfds), timeout);
     } while (ret < 0 && errno == EINTR);
 
     if (ret <= 0) {
@@ -574,12 +578,12 @@ chSocketRecv(int sock)
 #undef PKT_TIMEOUT_MS
 
 static int
-chSocketProcessHttpResponse(int sock)
+chSocketProcessHttpResponse(int sock, bool use_poll_timeout)
 {
     g_autofree char *response = NULL;
     int http_res;
 
-    response = chSocketRecv(sock);
+    response = chSocketRecv(sock, use_poll_timeout);
     if (response == NULL) {
         return -1;
     }
@@ -705,7 +709,7 @@ chProcessAddNetworkDevices(virCHDriver *driver,
             return -1;
         }
 
-        if (chSocketProcessHttpResponse(mon_sockfd) < 0)
+        if (chSocketProcessHttpResponse(mon_sockfd, true) < 0)
             return -1;
     }
 
-- 
2.34.1



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux