~ubuntu-branches/debian/squeeze/nginx/squeeze

« back to all changes in this revision

Viewing changes to src/event/ngx_event_accept.c

  • Committer: Bazaar Package Importer
  • Author(s): Fabio Tranchitella
  • Date: 2009-05-31 18:38:56 UTC
  • mfrom: (1.1.10 upstream) (4.1.12 experimental)
  • Revision ID: james.westby@ubuntu.com-20090531183856-3xhvf6wd0bw5556i
Tags: 0.7.59-1
* New upstream release, first in Debian for the 0.7 branch. Among other
  issues, it also fixes the problem with wildcard dns names used with SSL.
  (Closes: #515904)
* debian/watch: updated.
* debian/postinst: fixed a bashism. (Closes: #507913)
* debian/conf/nginx.conf: removed default_type. (Closes: #509390)
* debian/control: updated Standards-Version to 3.8.1, no changes needed.
* debian/NEWS.Debian: documented the issues with
  server_names_hash_bucket_size. (Closes: #524785)

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
#include <ngx_event.h>
10
10
 
11
11
 
12
 
/* the buffer size is enough to hold "struct sockaddr_un" */
13
 
#define NGX_SOCKLEN  512
14
 
 
15
 
 
16
12
static ngx_int_t ngx_enable_accept_events(ngx_cycle_t *cycle);
17
13
static ngx_int_t ngx_disable_accept_events(ngx_cycle_t *cycle);
18
14
static void ngx_close_accepted_connection(ngx_connection_t *c);
29
25
    ngx_listening_t   *ls;
30
26
    ngx_connection_t  *c, *lc;
31
27
    ngx_event_conf_t  *ecf;
32
 
    char               sa[NGX_SOCKLEN];
 
28
    u_char             sa[NGX_SOCKADDRLEN];
33
29
 
34
30
    ecf = ngx_event_get_conf(ngx_cycle->conf_ctx, ngx_event_core_module);
35
31
 
48
44
                   "accept on %V, ready: %d", &ls->addr_text, ev->available);
49
45
 
50
46
    do {
51
 
        socklen = NGX_SOCKLEN;
 
47
        socklen = NGX_SOCKADDRLEN;
52
48
 
53
49
        s = accept(lc->fd, (struct sockaddr *) sa, &socklen);
54
50
 
61
57
                return;
62
58
            }
63
59
 
64
 
            ngx_log_error((err == NGX_ECONNABORTED) ? NGX_LOG_ERR:
65
 
                                                      NGX_LOG_ALERT,
 
60
            ngx_log_error((ngx_uint_t) ((err == NGX_ECONNABORTED) ?
 
61
                                             NGX_LOG_ERR : NGX_LOG_ALERT),
66
62
                          ev->log, err, "accept() failed");
67
63
 
68
64
            if (err == NGX_ECONNABORTED) {
82
78
        ngx_atomic_fetch_add(ngx_stat_accepted, 1);
83
79
#endif
84
80
 
85
 
        ngx_accept_disabled = NGX_ACCEPT_THRESHOLD
 
81
        ngx_accept_disabled = ngx_cycle->connection_n / 8
86
82
                              - ngx_cycle->free_connection_n;
87
83
 
88
84
        c = ngx_get_connection(s, ev->log);
153
149
        c->log = log;
154
150
        c->pool->log = log;
155
151
 
 
152
        c->socklen = socklen;
156
153
        c->listening = ls;
157
 
        c->socklen = socklen;
 
154
        c->local_sockaddr = ls->sockaddr;
 
155
        c->local_socklen = ls->socklen;
158
156
 
159
157
        c->unexpected_eof = 1;
160
158
 
201
199
#endif
202
200
 
203
201
        if (ls->addr_ntop) {
204
 
            c->addr_text.data = ngx_palloc(c->pool, ls->addr_text_max_len);
 
202
            c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
205
203
            if (c->addr_text.data == NULL) {
206
204
                ngx_close_accepted_connection(c);
207
205
                return;
208
206
            }
209
207
 
210
 
            c->addr_text.len = ngx_sock_ntop(ls->family, c->sockaddr,
211
 
                                             c->addr_text.data,
212
 
                                             ls->addr_text_max_len);
 
208
            c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
 
209
                                             ls->addr_text_max_len, 0);
213
210
            if (c->addr_text.len == 0) {
214
211
                ngx_close_accepted_connection(c);
215
212
                return;