From 4ba18ec16037cdda025396fae6ca075aa98c0663 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 30 Apr 2019 14:42:31 +0200 Subject: [PATCH] FlatpakRemoteState: Include the active filter in the state Closes: #2869 Approved by: alexlarsson --- common/flatpak-dir-private.h | 4 ++++ common/flatpak-dir.c | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/common/flatpak-dir-private.h b/common/flatpak-dir-private.h index cbcb87d0..5527e0ab 100644 --- a/common/flatpak-dir-private.h +++ b/common/flatpak-dir-private.h @@ -106,6 +106,8 @@ typedef struct GError *summary_fetch_error; GVariant *metadata; GError *metadata_fetch_error; + GRegex *allow_refs; + GRegex *deny_refs; int refcount; } FlatpakRemoteState; @@ -115,6 +117,8 @@ gboolean flatpak_remote_state_ensure_summary (FlatpakRemoteState *self, GError **error); gboolean flatpak_remote_state_ensure_metadata (FlatpakRemoteState *self, GError **error); +gboolean flatpak_remote_state_allow_ref (FlatpakRemoteState *self, + const char *ref); gboolean flatpak_remote_state_lookup_ref (FlatpakRemoteState *self, const char *ref, char **out_checksum, diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c index 7ebd42f7..bff34a6c 100644 --- a/common/flatpak-dir.c +++ b/common/flatpak-dir.c @@ -277,6 +277,8 @@ flatpak_remote_state_unref (FlatpakRemoteState *remote_state) g_clear_error (&remote_state->summary_fetch_error); g_clear_pointer (&remote_state->metadata, g_variant_unref); g_clear_error (&remote_state->metadata_fetch_error); + g_clear_pointer (&remote_state->allow_refs, g_regex_unref); + g_clear_pointer (&remote_state->deny_refs, g_regex_unref); g_free (remote_state); } @@ -314,6 +316,13 @@ flatpak_remote_state_ensure_metadata (FlatpakRemoteState *self, return TRUE; } +gboolean +flatpak_remote_state_allow_ref (FlatpakRemoteState *self, + const char *ref) +{ + return flatpak_filters_allow_ref (self->allow_refs, self->deny_refs, ref); +} + /* Returns TRUE if the ref is found in the summary or cache. out_checksum and * out_variant are not guaranteed to be set even when the ref is found. */ gboolean @@ -10306,6 +10315,8 @@ _flatpak_dir_get_remote_state (FlatpakDir *self, return NULL; if (!repo_get_remote_collection_id (self->repo, remote_or_uri, &state->collection_id, error)) return NULL; + if (!flatpak_dir_lookup_remote_filter (self, remote_or_uri, &state->allow_refs, &state->deny_refs, error)) + return NULL; } if (local_only)