X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fdata%2Fgrits-http.c;h=45b30df0f767b94b7cf98fa50735f860dd0a239a;hp=76e68a4aa2935dd79b039ffe67f027cf0b7b9756;hb=fde5359a826dadb68cfe3f62f0f3c9e0c25f3438;hpb=782f6b5a0985384b68f2a4f233eef0541efd4c94 diff --git a/src/data/grits-http.c b/src/data/grits-http.c index 76e68a4..45b30df 100644 --- a/src/data/grits-http.c +++ b/src/data/grits-http.c @@ -58,6 +58,19 @@ GritsHttp *grits_http_new(const gchar *prefix) return http; } +/** + * grits_http_abort: + * @http: the #GritsHttp to abort + * + * Cancels any pending requests and prevents new requests. + */ +void grits_http_abort(GritsHttp *http) +{ + g_debug("GritsHttp: abort - %s", http->prefix); + http->aborted = TRUE; + soup_session_abort(http->soup); +} + /** * grits_http_free: * @http: the #GritsHttp to free @@ -67,7 +80,6 @@ GritsHttp *grits_http_new(const gchar *prefix) void grits_http_free(GritsHttp *http) { g_debug("GritsHttp: free - %s", http->prefix); - soup_session_abort(http->soup); g_object_unref(http->soup); g_free(http->prefix); g_free(http); @@ -148,6 +160,10 @@ gchar *grits_http_fetch(GritsHttp *http, const gchar *uri, const char *local, GritsCacheType mode, GritsChunkCallback callback, gpointer user_data) { g_debug("GritsHttp: fetch - %s mode=%d", local, mode); + if (http->aborted) { + g_debug("GritsPluginSat: _load_tile_thread - aborted"); + return NULL; + } gchar *path = _get_cache_path(http, local); /* Unlink the file if we're refreshing it */ @@ -253,7 +269,8 @@ GList *grits_http_available(GritsHttp *http, if (g_regex_match(filter_re, file, 0, NULL)) files = g_list_prepend(files, g_strdup(file)); g_free(path); - g_dir_close(dir); + if (dir) + g_dir_close(dir); } /* Add online files if online */