lib/fetch-curl: Unref timeout source
The timeout timer should always be one-shot, so let's just always destroy it in the callback. The main context has its own ref on it, so it won't be freed behind its back. This *should* fix a leak that was brought up in https://bugzilla.redhat.com/show_bug.cgi?id=1891761. Reported-by: Milan Crha <mcrha@redhat.com>
This commit is contained in:
parent
40edc33ef3
commit
8717608c7e
|
|
@ -426,12 +426,9 @@ static gboolean
|
||||||
timer_cb (gpointer data)
|
timer_cb (gpointer data)
|
||||||
{
|
{
|
||||||
OstreeFetcher *fetcher = data;
|
OstreeFetcher *fetcher = data;
|
||||||
GSource *orig_src = fetcher->timer_event;
|
g_clear_pointer (&fetcher->timer_event, (GDestroyNotify)destroy_and_unref_source);
|
||||||
|
|
||||||
(void)curl_multi_socket_action (fetcher->multi, CURL_SOCKET_TIMEOUT, 0, &fetcher->curl_running);
|
(void)curl_multi_socket_action (fetcher->multi, CURL_SOCKET_TIMEOUT, 0, &fetcher->curl_running);
|
||||||
check_multi_info (fetcher);
|
check_multi_info (fetcher);
|
||||||
if (fetcher->timer_event == orig_src)
|
|
||||||
fetcher->timer_event = NULL;
|
|
||||||
|
|
||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue