Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libs/zbxdbhigh/trigger.c44
1 files changed, 28 insertions, 16 deletions
diff --git a/src/libs/zbxdbhigh/trigger.c b/src/libs/zbxdbhigh/trigger.c
index 6aad2e06f85..b927fa765bb 100644
--- a/src/libs/zbxdbhigh/trigger.c
+++ b/src/libs/zbxdbhigh/trigger.c
@@ -731,30 +731,42 @@ static void db_trigger_get_expression(const zbx_eval_context_t *ctx, char **expr
DCconfig_get_functions_by_functionids(&function, &functionid, &err_func, 1);
- if (SUCCEED != err_func)
- continue;
+ if (SUCCEED == err_func)
+ {
+ DCconfig_get_items_by_itemids(&item, &function.itemid, &err_item, 1);
- DCconfig_get_items_by_itemids(&item, &function.itemid, &err_item, 1);
+ if (SUCCEED == err_item)
+ {
+ char *func = NULL;
+ size_t func_alloc = 0, func_offset = 0;
- if (SUCCEED == err_item)
- {
- char *func = NULL;
- size_t func_alloc = 0, func_offset = 0;
+ zbx_snprintf_alloc(&func, &func_alloc, &func_offset, "%s(/%s/%s",
+ function.function, item.host.host, item.key_orig);
- zbx_snprintf_alloc(&func, &func_alloc, &func_offset, "%s(/%s/%s",
- function.function, item.host.host, item.key_orig);
+ if ('\0' != *function.parameter)
+ zbx_snprintf_alloc(&func, &func_alloc, &func_offset, ",%s", function.parameter);
- if ('\0' != *function.parameter)
- zbx_snprintf_alloc(&func, &func_alloc, &func_offset, ",%s", function.parameter);
+ zbx_chrcpy_alloc(&func, &func_alloc, &func_offset,')');
- zbx_chrcpy_alloc(&func, &func_alloc, &func_offset,')');
+ zbx_variant_clear(&token->value);
+ zbx_variant_set_str(&token->value, func);
+ DCconfig_clean_items(&item, &err_item, 1);
+ }
+ else
+ {
+ zbx_variant_clear(&token->value);
+ zbx_variant_set_error(&token->value, zbx_dsprintf(NULL, "item id:" ZBX_FS_UI64
+ " deleted", function.itemid));
+ }
+ DCconfig_clean_functions(&function, &err_func, 1);
+ }
+ else
+ {
zbx_variant_clear(&token->value);
- zbx_variant_set_str(&token->value, func);
- DCconfig_clean_items(&item, &err_item, 1);
+ zbx_variant_set_error(&token->value, zbx_dsprintf(NULL, "function id:" ZBX_FS_UI64 " deleted",
+ functionid));
}
-
- DCconfig_clean_functions(&function, &err_func, 1);
}
zbx_eval_compose_expression(&local_ctx, expression);