zabbix_log(LOG_LEVEL_DEBUG, "In %s() itemid:" ZBX_FS_UI64 " key:'%s' host:'%s' addr:'%s' conn:'%s'", __func__,
#include "zbxasyncpoller.h"
#include "zbxtimekeeper.h"
#include "zbxcacheconfig.h"
#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
static const char *get_agent_step_string(zbx_zabbix_agent_step_t step)
case ZABBIX_AGENT_STEP_CONNECT_INIT:
case ZABBIX_AGENT_STEP_CONNECT_WAIT:
case ZABBIX_AGENT_STEP_TLS_WAIT:
case ZABBIX_AGENT_STEP_SEND:
case ZABBIX_AGENT_STEP_RECV:
case ZABBIX_AGENT_STEP_RECV_CLOSE:
return "receive close notify";
static int async_task_process_task_agent_cb(short event, void *data, int *fd, zbx_vector_address_t *addresses,
const char *reverse_dns, char *dnserr, struct event *timeout_event)
zbx_agent_context *agent_context = (zbx_agent_context *)data;
zbx_async_task_state_t state = ZBX_ASYNC_TASK_STOP;
zbx_poller_config_t *poller_config = (zbx_poller_config_t *)agent_context->arg_action;
socklen_t optlen = sizeof(int);
ZBX_UNUSED(timeout_event);
zabbix_log(LOG_LEVEL_DEBUG, "In %s() step '%s' '%s' event:%d itemid:" ZBX_FS_UI64 " addr:%s", __func__,
get_agent_step_string(agent_context->step), zbx_get_event_string(event), event,
agent_context->item.itemid, 0 != addresses->values_num ? addresses->values[0].ip : "");
if (NULL != poller_config && ZBX_PROCESS_STATE_IDLE == poller_config->state)
zbx_update_selfmon_counter(poller_config->info, ZBX_PROCESS_STATE_BUSY);
poller_config->state = ZBX_PROCESS_STATE_BUSY;
if (ZABBIX_ASYNC_STEP_REVERSE_DNS == agent_context->rdns_step)
agent_context->reverse_dns = zbx_strdup(NULL, reverse_dns);
if (0 != (event & EV_TIMEOUT))
agent_context->item.ret = TIMEOUT_ERROR;
SET_MSG_RESULT(&agent_context->item.result, zbx_dsprintf(NULL, "Get value from agent"
" failed: Cannot resolve address: %s", dnserr));
return ZBX_ASYNC_TASK_STOP;