static ngx_int_t ngx_resolver_send_query(ngx_resolver_t *r, ngx_resolver_node_t *rn) { ssize_t n; ngx_udp_connection_t *uc; uc = r->udp_connection; if (uc->connection == NULL) { if (ngx_udp_connect(uc) != NGX_OK) { return NGX_ERROR; } uc->connection->data = r; uc->connection->read->handler = ngx_resolver_read_response; uc->connection->read->resolver = 1; } n = ngx_send(uc->connection, rn->query, rn->qlen); if (n == -1) { return NGX_ERROR; } if ((size_t) n != (size_t) rn->qlen) { ngx_log_error(NGX_LOG_CRIT, &uc->log, 0, "send() incomplete"); return NGX_ERROR; } return NGX_OK; }
static ngx_int_t ngx_http_statsd_udp_send(ngx_udp_endpoint_t *l, u_char *buf, size_t len) { ssize_t n; ngx_udp_connection_t *uc; uc = l->udp_connection; if (!uc) { return NGX_ERROR; } if (uc->connection == NULL) { uc->log = *l->log; uc->log.handler = NULL; uc->log.data = NULL; uc->log.action = "logging"; if(ngx_udp_connect(uc) != NGX_OK) { if(uc->connection != NULL) { ngx_free_connection(uc->connection); uc->connection = NULL; } return NGX_ERROR; } uc->connection->data = l; uc->connection->read->handler = ngx_http_statsd_udp_dummy_handler; uc->connection->read->resolver = 0; } n = ngx_send(uc->connection, buf, len); if (n == -1) { return NGX_ERROR; } if ((size_t) n != (size_t) len) { #if defined nginx_version && nginx_version >= 8032 ngx_log_error(NGX_LOG_CRIT, &uc->log, 0, "send() incomplete"); #else ngx_log_error(NGX_LOG_CRIT, uc->log, 0, "send() incomplete"); #endif return NGX_ERROR; } return NGX_OK; }
static ngx_int_t ngx_resolver_send_query(ngx_resolver_t *r, ngx_resolver_node_t *rn) { ssize_t n; ngx_udp_connection_t *uc; uc = r->udp_connections.elts; uc = &uc[r->last_connection++]; if (r->last_connection == r->udp_connections.nelts) { r->last_connection = 0; } if (uc->connection == NULL) { uc->log = *r->log; uc->log.handler = ngx_resolver_log_error; uc->log.data = uc; uc->log.action = "resolving"; if (ngx_udp_connect(uc) != NGX_OK) { return NGX_ERROR; } uc->connection->data = r; uc->connection->read->handler = ngx_resolver_read_response; uc->connection->read->resolver = 1; } n = ngx_send(uc->connection, rn->query, rn->qlen); if (n == -1) { return NGX_ERROR; } if ((size_t) n != (size_t) rn->qlen) { ngx_log_error(NGX_LOG_CRIT, &uc->log, 0, "send() incomplete"); return NGX_ERROR; } return NGX_OK; }