Mercurial > hg > nginx-quic
view src/os/unix/ngx_udp_send.c @ 7230:098bbd076a2d
Upstream: trailers support, u->conf->pass_trailers flag.
Basic trailer headers support allows one to access response trailers
via the $upstream_trailer_* variables.
Additionally, the u->conf->pass_trailers flag was introduced. When the
flag is set, trailer headers from the upstream response are passed to
the client. Like normal headers, trailer headers will be hidden
if present in u->conf->hide_headers_hash.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 17 Mar 2018 23:04:21 +0300 |
parents | 8f038068f4bc |
children |
line wrap: on
line source
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #include <ngx_config.h> #include <ngx_core.h> #include <ngx_event.h> ssize_t ngx_udp_unix_send(ngx_connection_t *c, u_char *buf, size_t size) { ssize_t n; ngx_err_t err; ngx_event_t *wev; wev = c->write; for ( ;; ) { n = sendto(c->fd, buf, size, 0, c->sockaddr, c->socklen); ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, "sendto: fd:%d %z of %uz to \"%V\"", c->fd, n, size, &c->addr_text); if (n >= 0) { if ((size_t) n != size) { wev->error = 1; (void) ngx_connection_error(c, 0, "sendto() incomplete"); return NGX_ERROR; } c->sent += n; return n; } err = ngx_socket_errno; if (err == NGX_EAGAIN) { wev->ready = 0; ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, NGX_EAGAIN, "sendto() not ready"); return NGX_AGAIN; } if (err != NGX_EINTR) { wev->error = 1; (void) ngx_connection_error(c, err, "sendto() failed"); return NGX_ERROR; } } }