summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content/content.c11
-rw-r--r--content/content.h1
-rw-r--r--content/hlcache.c5
3 files changed, 16 insertions, 1 deletions
diff --git a/content/content.c b/content/content.c
index ba4db702c..c215ed1f8 100644
--- a/content/content.c
+++ b/content/content.c
@@ -989,6 +989,17 @@ bool content_matches_quirks(struct content *c, bool quirks)
}
/**
+ * Determine if a content is shareable
+ *
+ * \param c Content to consider
+ * \return True if content is shareable, false otherwise
+ */
+bool content_is_shareable(struct content *c)
+{
+ return handler_map[c->type].no_share == false;
+}
+
+/**
* Send a message to all users.
*/
diff --git a/content/content.h b/content/content.h
index f8838de2a..fbdb93454 100644
--- a/content/content.h
+++ b/content/content.h
@@ -104,6 +104,7 @@ void content_remove_user(struct content *c,
uint32_t content_count_users(struct content *c);
bool content_matches_quirks(struct content *c, bool quirks);
+bool content_is_shareable(struct content *c);
const struct llcache_handle *content_get_llcache_handle(struct content *c);
diff --git a/content/hlcache.c b/content/hlcache.c
index 3627343ad..2dd3c1526 100644
--- a/content/hlcache.c
+++ b/content/hlcache.c
@@ -427,7 +427,6 @@ nserror hlcache_find_content(hlcache_retrieval_ctx *ctx)
hlcache_handle entry_handle = { entry, NULL, NULL };
const llcache_handle *entry_llcache;
- /** \todo Need to ensure that content is shareable */
/** \todo Need to ensure that content can be reused */
if (entry->content == NULL)
continue;
@@ -436,6 +435,10 @@ nserror hlcache_find_content(hlcache_retrieval_ctx *ctx)
if (content_get_status(&entry_handle) == CONTENT_STATUS_ERROR)
continue;
+ /* Ensure that content is shareable */
+ if (content_is_shareable(entry->content) == false)
+ continue;
+
/* Ensure that quirks mode is acceptable */
if (content_matches_quirks(entry->content,
ctx->child.quirks) == false)