Signed-off-by: Tim Wiederhake <twiederh@xxxxxxxxxx> --- src/ch/ch_monitor.c | 55 ++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c index 84085b7991..2c6b83a1b5 100644 --- a/src/ch/ch_monitor.c +++ b/src/ch/ch_monitor.c @@ -648,14 +648,13 @@ virCHMonitorCurlPerform(CURL *handle) int virCHMonitorPutNoContent(virCHMonitor *mon, const char *endpoint) { + VIR_LOCK_GUARD lock = virObjectLockGuard(mon); g_autofree char *url = NULL; int responseCode = 0; int ret = -1; url = g_strdup_printf("%s/%s", URL_ROOT, endpoint); - virObjectLock(mon); - /* reset all options of a libcurl session handle at first */ curl_easy_reset(mon->handle); @@ -666,8 +665,6 @@ virCHMonitorPutNoContent(virCHMonitor *mon, const char *endpoint) responseCode = virCHMonitorCurlPerform(mon->handle); - virObjectUnlock(mon); - if (responseCode == 200 || responseCode == 204) ret = 0; @@ -707,26 +704,24 @@ virCHMonitorGet(virCHMonitor *mon, const char *endpoint, virJSONValue **response url = g_strdup_printf("%s/%s", URL_ROOT, endpoint); - virObjectLock(mon); + VIR_WITH_OBJECT_LOCK_GUARD(mon) { + /* reset all options of a libcurl session handle at first */ + curl_easy_reset(mon->handle); - /* reset all options of a libcurl session handle at first */ - curl_easy_reset(mon->handle); + curl_easy_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath); + curl_easy_setopt(mon->handle, CURLOPT_URL, url); - curl_easy_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath); - curl_easy_setopt(mon->handle, CURLOPT_URL, url); + if (response) { + headers = curl_slist_append(headers, "Accept: application/json"); + headers = curl_slist_append(headers, "Content-Type: application/json"); + curl_easy_setopt(mon->handle, CURLOPT_HTTPHEADER, headers); + curl_easy_setopt(mon->handle, CURLOPT_WRITEFUNCTION, curl_callback); + curl_easy_setopt(mon->handle, CURLOPT_WRITEDATA, (void *)&data); + } - if (response) { - headers = curl_slist_append(headers, "Accept: application/json"); - headers = curl_slist_append(headers, "Content-Type: application/json"); - curl_easy_setopt(mon->handle, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(mon->handle, CURLOPT_WRITEFUNCTION, curl_callback); - curl_easy_setopt(mon->handle, CURLOPT_WRITEDATA, (void *)&data); + responseCode = virCHMonitorCurlPerform(mon->handle); } - responseCode = virCHMonitorCurlPerform(mon->handle); - - virObjectUnlock(mon); - if (responseCode == 200 || responseCode == 204) { if (response) { data.content = g_realloc(data.content, data.size + 1); @@ -863,20 +858,18 @@ virCHMonitorCreateVM(virCHMonitor *mon, nnicindexes, nicindexes) != 0) return -1; - virObjectLock(mon); - - /* reset all options of a libcurl session handle at first */ - curl_easy_reset(mon->handle); - - curl_easy_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath); - curl_easy_setopt(mon->handle, CURLOPT_URL, url); - curl_easy_setopt(mon->handle, CURLOPT_CUSTOMREQUEST, "PUT"); - curl_easy_setopt(mon->handle, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(mon->handle, CURLOPT_POSTFIELDS, payload); + VIR_WITH_OBJECT_LOCK_GUARD(mon) { + /* reset all options of a libcurl session handle at first */ + curl_easy_reset(mon->handle); - responseCode = virCHMonitorCurlPerform(mon->handle); + curl_easy_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath); + curl_easy_setopt(mon->handle, CURLOPT_URL, url); + curl_easy_setopt(mon->handle, CURLOPT_CUSTOMREQUEST, "PUT"); + curl_easy_setopt(mon->handle, CURLOPT_HTTPHEADER, headers); + curl_easy_setopt(mon->handle, CURLOPT_POSTFIELDS, payload); - virObjectUnlock(mon); + responseCode = virCHMonitorCurlPerform(mon->handle); + } if (responseCode == 200 || responseCode == 204) ret = 0; -- 2.31.1