int meta2_filter_extract_header_chunk_beans(struct gridd_filter_ctx_s *ctx, struct gridd_reply_ctx_s *reply) { GSList **lists = g_malloc0(2 * sizeof(GSList *)); EXTRACT_HEADER_BEANS(NAME_MSGKEY_NEW, lists[0]); EXTRACT_HEADER_BEANS(NAME_MSGKEY_OLD, lists[1]); meta2_filter_ctx_set_input_udata(ctx, lists, _plist_cleaner); return FILTER_OK; }
int meta2_filter_extract_body_beans(struct gridd_filter_ctx_s *ctx, struct gridd_reply_ctx_s *reply) { GSList *l = NULL; const char *opt = meta2_filter_ctx_get_param(ctx, "BODY_OPT"); TRACE_FILTER(); /* get the message body */ GError *err = metautils_message_extract_body_encoded (reply->request, (opt==NULL), &l, bean_sequence_decoder); if (err) { _bean_cleanl2 (l); meta2_filter_ctx_set_error(ctx, NEWERROR(CODE_BAD_REQUEST, "Invalid request, Empty / Invalid body")); return FILTER_KO; } meta2_filter_ctx_set_input_udata(ctx, l, (GDestroyNotify)_bean_cleanl2); return FILTER_OK; }
void _on_bean_ctx_append_udata_list(struct on_bean_ctx_s *obc) { struct meta2_backend_s *m2b = meta2_filter_ctx_get_backend(obc->ctx); struct hc_url_s *url = meta2_filter_ctx_get_url(obc->ctx); struct event_config_s * evt_config = meta2_backend_get_event_config(m2b, hc_url_get(url, HCURL_NS)); if (event_is_enabled(evt_config) || event_is_notifier_enabled(evt_config)) { if (obc->first) { obc->first = FALSE; meta2_filter_ctx_set_input_udata(obc->ctx, obc->l, (GDestroyNotify)_bean_cleanl2); } else { meta2_filter_ctx_set_input_udata2(obc->ctx, g_slist_concat(obc->l, (GSList*)meta2_filter_ctx_get_input_udata(obc->ctx)), (GDestroyNotify) _bean_cleanl2, FALSE); } } else { GRID_TRACE("Events disabled, cleaning beans immediately"); _bean_cleanl2(obc->l); } }