use variable for often used field

This commit is contained in:
Igor Sysoev 2009-02-24 08:32:02 +00:00
parent fed1ca0dc7
commit 9b4a1d0094

View File

@ -15,9 +15,11 @@ static void ngx_close_posted_connection(ngx_connection_t *c);
void void
ngx_event_acceptex(ngx_event_t *rev) ngx_event_acceptex(ngx_event_t *rev)
{ {
ngx_listening_t *ls;
ngx_connection_t *c; ngx_connection_t *c;
c = rev->data; c = rev->data;
ls = c->listening;
c->log->handler = ngx_accept_log_error; c->log->handler = ngx_accept_log_error;
@ -25,14 +27,14 @@ ngx_event_acceptex(ngx_event_t *rev)
if (rev->ovlp.error) { if (rev->ovlp.error) {
ngx_log_error(NGX_LOG_CRIT, c->log, rev->ovlp.error, ngx_log_error(NGX_LOG_CRIT, c->log, rev->ovlp.error,
"AcceptEx() %V failed", &c->listening->addr_text); "AcceptEx() %V failed", &ls->addr_text);
return; return;
} }
/* SO_UPDATE_ACCEPT_CONTEXT is required for shutdown() to work */ /* SO_UPDATE_ACCEPT_CONTEXT is required for shutdown() to work */
if (setsockopt(c->fd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, if (setsockopt(c->fd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
(char *) &c->listening->fd, sizeof(ngx_socket_t)) (char *) &ls->fd, sizeof(ngx_socket_t))
== -1) == -1)
{ {
ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno, ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
@ -43,41 +45,40 @@ ngx_event_acceptex(ngx_event_t *rev)
} }
ngx_getacceptexsockaddrs(c->buffer->pos, ngx_getacceptexsockaddrs(c->buffer->pos,
c->listening->post_accept_buffer_size, ls->post_accept_buffer_size,
c->listening->socklen + 16, ls->socklen + 16,
c->listening->socklen + 16, ls->socklen + 16,
&c->local_sockaddr, &c->local_socklen, &c->local_sockaddr, &c->local_socklen,
&c->sockaddr, &c->socklen); &c->sockaddr, &c->socklen);
if (c->listening->post_accept_buffer_size) { if (ls->post_accept_buffer_size) {
c->buffer->last += rev->available; c->buffer->last += rev->available;
c->buffer->end = c->buffer->start c->buffer->end = c->buffer->start + ls->post_accept_buffer_size;
+ c->listening->post_accept_buffer_size;
} else { } else {
c->buffer = NULL; c->buffer = NULL;
} }
if (c->listening->addr_ntop) { if (ls->addr_ntop) {
c->addr_text.data = ngx_pnalloc(c->pool, c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
c->listening->addr_text_max_len);
if (c->addr_text.data == NULL) { if (c->addr_text.data == NULL) {
/* TODO: close socket */ /* TODO: close socket */
return; return;
} }
c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data, c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
c->listening->addr_text_max_len, 0); ls->addr_text_max_len, 0);
if (c->addr_text.len == 0) { if (c->addr_text.len == 0) {
/* TODO: close socket */ /* TODO: close socket */
return; return;
} }
} }
ngx_event_post_acceptex(c->listening, 1); ngx_event_post_acceptex(ls, 1);
c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1); c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
c->listening->handler(c); ls->handler(c);
return; return;