ngx_buf_t buf;
ngx_log_t *log;
ngx_err_t err;
- socklen_t socklen, local_socklen;
+ socklen_t local_socklen;
ngx_event_t *rev, *wev;
struct iovec iov[1];
struct msghdr msg;
ngx_sockaddr_t sa, lsa;
- struct sockaddr *sockaddr, *local_sockaddr;
+ ngx_udp_dgram_t dgram;
+ struct sockaddr *local_sockaddr;
ngx_listening_t *ls;
ngx_event_conf_t *ecf;
ngx_connection_t *c, *lc;
}
#endif
- sockaddr = msg.msg_name;
- socklen = msg.msg_namelen;
+ dgram.sockaddr = msg.msg_name;
+ dgram.socklen = msg.msg_namelen;
- if (socklen > (socklen_t) sizeof(ngx_sockaddr_t)) {
- socklen = sizeof(ngx_sockaddr_t);
+ if (dgram.socklen > (socklen_t) sizeof(ngx_sockaddr_t)) {
+ dgram.socklen = sizeof(ngx_sockaddr_t);
}
- if (socklen == 0) {
+ if (dgram.socklen == 0) {
/*
* on Linux recvmsg() returns zero msg_namelen
* when receiving packets from unbound AF_UNIX sockets
*/
- socklen = sizeof(struct sockaddr);
+ dgram.socklen = sizeof(struct sockaddr);
ngx_memzero(&sa, sizeof(struct sockaddr));
sa.sockaddr.sa_family = ls->sockaddr->sa_family;
}
#endif
- key.data = (u_char *) sockaddr;
- key.len = socklen;
+ key.data = (u_char *) dgram.sockaddr;
+ key.len = dgram.socklen;
#if (NGX_HAVE_UNIX_DOMAIN)
- if (sockaddr->sa_family == AF_UNIX) {
- struct sockaddr_un *saun = (struct sockaddr_un *) sockaddr;
+ if (dgram.sockaddr->sa_family == AF_UNIX) {
+ struct sockaddr_un *saun = (struct sockaddr_un *) dgram.sockaddr;
- if (socklen <= (socklen_t) offsetof(struct sockaddr_un, sun_path)
+ if (dgram.socklen <= (socklen_t) offsetof(struct sockaddr_un,
+ sun_path)
|| saun->sun_path[0] == '\0')
{
ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ngx_cycle->log, 0,
}
#endif
-#if (NGX_QUIC)
- if (ls->quic) {
- c->socklen = socklen;
- ngx_memcpy(c->sockaddr, sockaddr, socklen);
- }
-#endif
-
ngx_memzero(&buf, sizeof(ngx_buf_t));
buf.pos = buffer;
rev = c->read;
- c->udp->buffer = &buf;
+ dgram.buffer = &buf;
+
+ c->udp->dgram = &dgram;
rev->ready = 1;
rev->active = 0;
rev->handler(rev);
if (c->udp) {
- c->udp->buffer = NULL;
+ c->udp->dgram = NULL;
}
rev->ready = 0;
c->shared = 1;
c->type = SOCK_DGRAM;
- c->socklen = socklen;
+ c->socklen = dgram.socklen;
#if (NGX_STAT_STUB)
(void) ngx_atomic_fetch_add(ngx_stat_active, 1);
return;
}
- len = socklen;
+ len = dgram.socklen;
#if (NGX_QUIC)
if (ls->quic) {
return;
}
- ngx_memcpy(c->sockaddr, sockaddr, socklen);
+ ngx_memcpy(c->sockaddr, dgram.sockaddr, dgram.socklen);
log = ngx_palloc(c->pool, sizeof(ngx_log_t));
if (log == NULL) {
ssize_t n;
ngx_buf_t *b;
- if (c->udp == NULL || c->udp->buffer == NULL) {
+ if (c->udp == NULL || c->udp->dgram == NULL) {
return NGX_AGAIN;
}
- b = c->udp->buffer;
+ b = c->udp->dgram->buffer;
n = ngx_min(b->last - b->pos, (ssize_t) size);
ngx_memcpy(buf, b->pos, n);
- c->udp->buffer = NULL;
+ c->udp->dgram = NULL;
c->read->ready = 0;
c->read->active = 1;