+static int ingest_sub_record(struct client *cl, xmlDoc *xdoc, xmlNode *root,
+ int record_no, NMEM nmem,
+ struct session_database *sdb,
+ const char **mergekey_norm)
+{
+ int ret = 0;
+ struct session *se = client_get_session(cl);
+ struct conf_service *service = se->service;
+
+ insert_settings_values(sdb, xdoc, root, service);
+
+ if (!check_record_filter(root, sdb))
+ {
+ session_log(se, YLOG_LOG,
+ "Filtered out record no %d from %s",
+ record_no, sdb->database->id);
+ return 0;
+ }
+ if (!*mergekey_norm)
+ {
+ *mergekey_norm = get_mergekey(xdoc, root, cl, record_no, service, nmem,
+ se->mergekey);
+ }
+ if (!*mergekey_norm)
+ {
+ session_log(se, YLOG_WARN, "Got no mergekey for record no %d from %s",
+ record_no, sdb->database->id);
+ return -1;
+ }
+ session_enter(se, "ingest_sub_record");
+ if (client_get_session(cl) == se && se->relevance)
+ ret = ingest_to_cluster(cl, xdoc, root, record_no, *mergekey_norm);
+ session_leave(se, "ingest_sub_record");
+
+ return ret;
+}
+