mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
ch_monitor: Use automatic mutex management
Signed-off-by: Tim Wiederhake <twiederh@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
8c6e726f7d
commit
5b48de594d
@ -648,14 +648,13 @@ virCHMonitorCurlPerform(CURL *handle)
|
|||||||
int
|
int
|
||||||
virCHMonitorPutNoContent(virCHMonitor *mon, const char *endpoint)
|
virCHMonitorPutNoContent(virCHMonitor *mon, const char *endpoint)
|
||||||
{
|
{
|
||||||
|
VIR_LOCK_GUARD lock = virObjectLockGuard(mon);
|
||||||
g_autofree char *url = NULL;
|
g_autofree char *url = NULL;
|
||||||
int responseCode = 0;
|
int responseCode = 0;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
url = g_strdup_printf("%s/%s", URL_ROOT, endpoint);
|
url = g_strdup_printf("%s/%s", URL_ROOT, endpoint);
|
||||||
|
|
||||||
virObjectLock(mon);
|
|
||||||
|
|
||||||
/* reset all options of a libcurl session handle at first */
|
/* reset all options of a libcurl session handle at first */
|
||||||
curl_easy_reset(mon->handle);
|
curl_easy_reset(mon->handle);
|
||||||
|
|
||||||
@ -666,8 +665,6 @@ virCHMonitorPutNoContent(virCHMonitor *mon, const char *endpoint)
|
|||||||
|
|
||||||
responseCode = virCHMonitorCurlPerform(mon->handle);
|
responseCode = virCHMonitorCurlPerform(mon->handle);
|
||||||
|
|
||||||
virObjectUnlock(mon);
|
|
||||||
|
|
||||||
if (responseCode == 200 || responseCode == 204)
|
if (responseCode == 200 || responseCode == 204)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
@ -707,26 +704,24 @@ virCHMonitorGet(virCHMonitor *mon, const char *endpoint, virJSONValue **response
|
|||||||
|
|
||||||
url = g_strdup_printf("%s/%s", URL_ROOT, endpoint);
|
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_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath);
|
||||||
curl_easy_reset(mon->handle);
|
curl_easy_setopt(mon->handle, CURLOPT_URL, url);
|
||||||
|
|
||||||
curl_easy_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath);
|
if (response) {
|
||||||
curl_easy_setopt(mon->handle, CURLOPT_URL, url);
|
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) {
|
responseCode = virCHMonitorCurlPerform(mon->handle);
|
||||||
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);
|
|
||||||
|
|
||||||
virObjectUnlock(mon);
|
|
||||||
|
|
||||||
if (responseCode == 200 || responseCode == 204) {
|
if (responseCode == 200 || responseCode == 204) {
|
||||||
if (response) {
|
if (response) {
|
||||||
data.content = g_realloc(data.content, data.size + 1);
|
data.content = g_realloc(data.content, data.size + 1);
|
||||||
@ -863,20 +858,18 @@ virCHMonitorCreateVM(virCHMonitor *mon,
|
|||||||
nnicindexes, nicindexes) != 0)
|
nnicindexes, nicindexes) != 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
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_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath);
|
||||||
curl_easy_reset(mon->handle);
|
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);
|
||||||
|
|
||||||
curl_easy_setopt(mon->handle, CURLOPT_UNIX_SOCKET_PATH, mon->socketpath);
|
responseCode = virCHMonitorCurlPerform(mon->handle);
|
||||||
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);
|
|
||||||
|
|
||||||
responseCode = virCHMonitorCurlPerform(mon->handle);
|
|
||||||
|
|
||||||
virObjectUnlock(mon);
|
|
||||||
|
|
||||||
if (responseCode == 200 || responseCode == 204)
|
if (responseCode == 200 || responseCode == 204)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user