comparison src/event/ngx_event_acceptex.c @ 2535:ec5825afc7eb

use variable for often used field
author Igor Sysoev <igor@sysoev.ru>
date Tue, 24 Feb 2009 08:32:02 +0000
parents 2e91aecb9e57
children 00d436dbf826
comparison
equal deleted inserted replaced
2534:2749e4bf6af0 2535:ec5825afc7eb
13 13
14 14
15 void 15 void
16 ngx_event_acceptex(ngx_event_t *rev) 16 ngx_event_acceptex(ngx_event_t *rev)
17 { 17 {
18 ngx_listening_t *ls;
18 ngx_connection_t *c; 19 ngx_connection_t *c;
19 20
20 c = rev->data; 21 c = rev->data;
22 ls = c->listening;
21 23
22 c->log->handler = ngx_accept_log_error; 24 c->log->handler = ngx_accept_log_error;
23 25
24 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "AcceptEx: %d", c->fd); 26 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "AcceptEx: %d", c->fd);
25 27
26 if (rev->ovlp.error) { 28 if (rev->ovlp.error) {
27 ngx_log_error(NGX_LOG_CRIT, c->log, rev->ovlp.error, 29 ngx_log_error(NGX_LOG_CRIT, c->log, rev->ovlp.error,
28 "AcceptEx() %V failed", &c->listening->addr_text); 30 "AcceptEx() %V failed", &ls->addr_text);
29 return; 31 return;
30 } 32 }
31 33
32 /* SO_UPDATE_ACCEPT_CONTEXT is required for shutdown() to work */ 34 /* SO_UPDATE_ACCEPT_CONTEXT is required for shutdown() to work */
33 35
34 if (setsockopt(c->fd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, 36 if (setsockopt(c->fd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
35 (char *) &c->listening->fd, sizeof(ngx_socket_t)) 37 (char *) &ls->fd, sizeof(ngx_socket_t))
36 == -1) 38 == -1)
37 { 39 {
38 ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno, 40 ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
39 "setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed for %V", 41 "setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed for %V",
40 &c->addr_text); 42 &c->addr_text);
41 } else { 43 } else {
42 c->accept_context_updated = 1; 44 c->accept_context_updated = 1;
43 } 45 }
44 46
45 ngx_getacceptexsockaddrs(c->buffer->pos, 47 ngx_getacceptexsockaddrs(c->buffer->pos,
46 c->listening->post_accept_buffer_size, 48 ls->post_accept_buffer_size,
47 c->listening->socklen + 16, 49 ls->socklen + 16,
48 c->listening->socklen + 16, 50 ls->socklen + 16,
49 &c->local_sockaddr, &c->local_socklen, 51 &c->local_sockaddr, &c->local_socklen,
50 &c->sockaddr, &c->socklen); 52 &c->sockaddr, &c->socklen);
51 53
52 if (c->listening->post_accept_buffer_size) { 54 if (ls->post_accept_buffer_size) {
53 c->buffer->last += rev->available; 55 c->buffer->last += rev->available;
54 c->buffer->end = c->buffer->start 56 c->buffer->end = c->buffer->start + ls->post_accept_buffer_size;
55 + c->listening->post_accept_buffer_size; 57
56 } else { 58 } else {
57 c->buffer = NULL; 59 c->buffer = NULL;
58 } 60 }
59 61
60 if (c->listening->addr_ntop) { 62 if (ls->addr_ntop) {
61 c->addr_text.data = ngx_pnalloc(c->pool, 63 c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
62 c->listening->addr_text_max_len);
63 if (c->addr_text.data == NULL) { 64 if (c->addr_text.data == NULL) {
64 /* TODO: close socket */ 65 /* TODO: close socket */
65 return; 66 return;
66 } 67 }
67 68
68 c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data, 69 c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
69 c->listening->addr_text_max_len, 0); 70 ls->addr_text_max_len, 0);
70 if (c->addr_text.len == 0) { 71 if (c->addr_text.len == 0) {
71 /* TODO: close socket */ 72 /* TODO: close socket */
72 return; 73 return;
73 } 74 }
74 } 75 }
75 76
76 ngx_event_post_acceptex(c->listening, 1); 77 ngx_event_post_acceptex(ls, 1);
77 78
78 c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1); 79 c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
79 80
80 c->listening->handler(c); 81 ls->handler(c);
81 82
82 return; 83 return;
83 84
84 } 85 }
85 86