vici: Avoid recursive control log invocations

This commit is contained in:
Martin Willi
2014-05-07 14:13:35 +02:00
parent 993bfe95fb
commit 3b5808a0f6
+24 -18
View File
@@ -49,6 +49,8 @@ typedef struct {
u_int id; u_int id;
/** loglevel */ /** loglevel */
level_t level; level_t level;
/** prevent recursive log */
u_int recursive;
} log_info_t; } log_info_t;
/** /**
@@ -59,27 +61,31 @@ static bool log_vici(log_info_t *info, debug_t group, level_t level,
{ {
if (level <= info->level) if (level <= info->level)
{ {
vici_message_t *message; if (info->recursive++ == 0)
vici_builder_t *builder;
builder = vici_builder_create();
builder->add_kv(builder, "group", "%N", debug_names, group);
builder->add_kv(builder, "level", "%d", level);
if (ike_sa)
{ {
builder->add_kv(builder, "ikesa-name", "%s", vici_message_t *message;
ike_sa->get_name(ike_sa)); vici_builder_t *builder;
builder->add_kv(builder, "ikesa-uniqueid", "%u",
ike_sa->get_unique_id(ike_sa));
}
builder->add_kv(builder, "msg", "%s", text);
message = builder->finalize(builder); builder = vici_builder_create();
if (message) builder->add_kv(builder, "group", "%N", debug_names, group);
{ builder->add_kv(builder, "level", "%d", level);
info->dispatcher->raise_event(info->dispatcher, "control-log", if (ike_sa)
info->id, message); {
builder->add_kv(builder, "ikesa-name", "%s",
ike_sa->get_name(ike_sa));
builder->add_kv(builder, "ikesa-uniqueid", "%u",
ike_sa->get_unique_id(ike_sa));
}
builder->add_kv(builder, "msg", "%s", text);
message = builder->finalize(builder);
if (message)
{
info->dispatcher->raise_event(info->dispatcher, "control-log",
info->id, message);
}
} }
info->recursive--;
} }
return TRUE; return TRUE;
} }