* @param item
* @return
*/
-gint rspamd_symcache_item_flags (struct rspamd_symcache_item *item);
+gint rspamd_symcache_dyn_item_flags (struct rspamd_task *task,
+ struct rspamd_symcache_dynamic_item *dyn_item);
+gint rspamd_symcache_item_flags(struct rspamd_symcache_item *item);
+
/**
* Returns cache item name
* @param item
* @return
*/
-const gchar* rspamd_symcache_item_name (struct rspamd_symcache_item *item);
+const gchar* rspamd_symcache_dyn_item_name (struct rspamd_task *task,
+ struct rspamd_symcache_dynamic_item *dyn_item);
+const gchar * rspamd_symcache_item_name(struct rspamd_symcache_item *item);
+
/**
* Returns the current item stat
* @param item
return real_item->get_flags();
}
+
+const gchar*
+rspamd_symcache_dyn_item_name (struct rspamd_task *task,
+ struct rspamd_symcache_dynamic_item *dyn_item)
+{
+ auto *cache_runtime = C_API_SYMCACHE_RUNTIME(task->symcache_runtime);
+ auto *real_dyn_item = C_API_SYMCACHE_DYN_ITEM(dyn_item);
+
+ if (cache_runtime == nullptr || real_dyn_item == nullptr) {
+ return nullptr;
+ }
+
+ auto static_item = cache_runtime->get_item_by_dynamic_item(real_dyn_item);
+
+ return static_item->get_name().c_str();
+}
+
+gint
+rspamd_symcache_item_flags(struct rspamd_task *task,
+ struct rspamd_symcache_dynamic_item *dyn_item)
+{
+ auto *cache_runtime = C_API_SYMCACHE_RUNTIME(task->symcache_runtime);
+ auto *real_dyn_item = C_API_SYMCACHE_DYN_ITEM(dyn_item);
+
+ if (cache_runtime == nullptr || real_dyn_item == nullptr) {
+ return 0;
+ }
+
+ auto static_item = cache_runtime->get_item_by_dynamic_item(real_dyn_item);
+
+ return static_item->get_flags();
+}
+
guint
rspamd_symcache_get_symbol_flags(struct rspamd_symcache *cache,
const gchar *symbol)
if (cbd->item) {
rspamd_session_add_event_full (cbd->session,
(event_finalizer_t) lua_http_fin, cbd,
- M, rspamd_symcache_item_name (cbd->item));
+ M,
+ rspamd_symcache_dyn_item_name (cbd->task, cbd->item));
}
else {
rspamd_session_add_event (cbd->session,
if (cbd->item) {
cbd->async_ev = rspamd_session_add_event_full (cbd->session, fin, cbd, M,
- rspamd_symcache_item_name (cbd->item));
+ rspamd_symcache_dyn_item_name (cbd->task, cbd->item));
}
else {
cbd->async_ev = rspamd_session_add_event (cbd->session, fin, cbd, M);
if (cbd->s && !cbd->async_ev) {
if (cbd->item) {
cbd->async_ev = rspamd_session_add_event_full (cbd->s, lua_udp_cbd_fin,
- cbd, M, rspamd_symcache_item_name (cbd->item));
+ cbd, M,
+ rspamd_symcache_dyn_item_name (cbd->task, cbd->item));
}
else {
cbd->async_ev = rspamd_session_add_event (cbd->s, lua_udp_cbd_fin,