diff --git a/src/libostree/ostree-fetcher.c b/src/libostree/ostree-fetcher.c index 2964a1aa..8f103080 100644 --- a/src/libostree/ostree-fetcher.c +++ b/src/libostree/ostree-fetcher.c @@ -1083,10 +1083,6 @@ fetch_uri_sync_on_complete (GObject *object, data->done = TRUE; } -/* Synchronously request a URI - will iterate the thread-default main - * context for historical reasons. If you don't want that, push a - * temporary one. - */ gboolean _ostree_fetcher_request_uri_to_membuf (OstreeFetcher *fetcher, SoupURI *uri, @@ -1110,7 +1106,8 @@ _ostree_fetcher_request_uri_to_membuf (OstreeFetcher *fetcher, if (g_cancellable_set_error_if_cancelled (cancellable, error)) return FALSE; - mainctx = g_main_context_ref_thread_default (); + mainctx = g_main_context_new (); + g_main_context_push_thread_default (mainctx); data.done = FALSE; data.error = error; @@ -1155,6 +1152,8 @@ _ostree_fetcher_request_uri_to_membuf (OstreeFetcher *fetcher, ret = TRUE; *out_contents = g_memory_output_stream_steal_as_bytes (buf); out: + if (mainctx) + g_main_context_pop_thread_default (mainctx); g_clear_object (&(data.result_stream)); return ret; } diff --git a/src/libostree/ostree-metalink.c b/src/libostree/ostree-metalink.c index 083ad16f..5ca69e69 100644 --- a/src/libostree/ostree-metalink.c +++ b/src/libostree/ostree-metalink.c @@ -589,11 +589,6 @@ typedef struct GMainLoop *loop; } FetchMetalinkSyncData; -/* - * Note that for legacy reasons we iterate the caller's main context. - * If you don't want that (and you probably don't) push a temporary - * one. - */ gboolean _ostree_metalink_request_sync (OstreeMetalink *self, SoupURI **out_target_uri, @@ -612,7 +607,8 @@ _ostree_metalink_request_sync (OstreeMetalink *self, if (fetching_sync_uri != NULL) *fetching_sync_uri = _ostree_metalink_get_uri (self); - mainctx = g_main_context_ref_thread_default (); + mainctx = g_main_context_new (); + g_main_context_push_thread_default (mainctx); request.metalink = g_object_ref (self); request.urls = g_ptr_array_new_with_free_func ((GDestroyNotify) soup_uri_free); @@ -637,6 +633,8 @@ _ostree_metalink_request_sync (OstreeMetalink *self, ret = TRUE; out: + if (mainctx) + g_main_context_pop_thread_default (mainctx); g_clear_object (&request.metalink); g_clear_pointer (&request.urls, g_ptr_array_unref); g_clear_pointer (&request.parser, g_markup_parse_context_free);