Mercurial > hg > nginx-vendor-current
annotate src/os/unix/ngx_socket.c @ 92:45945fa8b8ba NGINX_0_2_0
nginx 0.2.0
*) The pid-file names used during online upgrade was changed and now is
not required a manual rename operation. The old master process adds
the ".oldbin" suffix to its pid-file and executes a new binary file.
The new master process creates usual pid-file without the ".newbin"
suffix. If the master process exits, then old master process renames
back its pid-file with the ".oldbin" suffix to the pid-file without
suffix.
*) Change: the "worker_connections" directive, new name of the
"connections" directive; now the directive specifies maximum number
of connections, but not maximum socket descriptor number.
*) Feature: SSL supports the session cache inside one worker process.
*) Feature: the "satisfy_any" directive.
*) Change: the ngx_http_access_module and ngx_http_auth_basic_module do
not run for subrequests.
*) Feature: the "worker_rlimit_nofile" and "worker_rlimit_sigpending"
directives.
*) Bugfix: if all backend using in load-balancing failed after one
error, then nginx did not try do connect to them during 60 seconds.
*) Bugfix: in IMAP/POP3 command argument parsing.
Thanks to Rob Mueller.
*) Bugfix: errors while using SSL in IMAP/POP3 proxy.
*) Bugfix: errors while using SSI and gzipping.
*) Bugfix: the "Expires" and "Cache-Control" header lines were omitted
from the 304 responses.
Thanks to Alexandr Kukushkin.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Fri, 23 Sep 2005 00:00:00 +0400 |
parents | 72eb30262aac |
children | 408f195b3482 |
rev | line source |
---|---|
0 | 1 |
2 /* | |
3 * Copyright (C) Igor Sysoev | |
4 */ | |
5 | |
6 | |
7 #include <ngx_config.h> | |
8 #include <ngx_core.h> | |
9 | |
10 | |
11 /* | |
12 * ioctl(FIONBIO) sets a blocking mode with the single syscall | |
13 * while fcntl(F_SETFL, ~O_NONBLOCK) needs to learn before | |
14 * the previous state using fcntl(F_GETFL). | |
15 * | |
16 * ioctl() and fcntl() are syscalls on at least FreeBSD 2.x, Linux 2.2 | |
17 * and Solaris 7. | |
18 * | |
2 | 19 * ioctl() in Linux 2.4 and 2.6 uses BKL, however, fcntl(F_SETFL) uses it too. |
0 | 20 */ |
21 | |
22 | |
18 | 23 #if (NGX_HAVE_FIONBIO) |
0 | 24 |
50 | 25 int |
26 ngx_nonblocking(ngx_socket_t s) | |
0 | 27 { |
28 u_long nb; | |
29 | |
30 nb = 1; | |
31 | |
32 return ioctl(s, FIONBIO, &nb); | |
33 } | |
34 | |
35 | |
50 | 36 int |
37 ngx_blocking(ngx_socket_t s) | |
0 | 38 { |
39 u_long nb; | |
40 | |
41 nb = 0; | |
42 | |
43 return ioctl(s, FIONBIO, &nb); | |
44 } | |
45 | |
46 #endif | |
47 | |
48 | |
4 | 49 #if (NGX_FREEBSD) |
0 | 50 |
50 | 51 int |
52 ngx_tcp_nopush(ngx_socket_t s) | |
0 | 53 { |
54 int tcp_nopush; | |
55 | |
56 tcp_nopush = 1; | |
57 | |
58 return setsockopt(s, IPPROTO_TCP, TCP_NOPUSH, | |
59 (const void *) &tcp_nopush, sizeof(int)); | |
60 } | |
61 | |
62 | |
50 | 63 int |
64 ngx_tcp_push(ngx_socket_t s) | |
0 | 65 { |
66 int tcp_nopush; | |
67 | |
68 tcp_nopush = 0; | |
69 | |
70 return setsockopt(s, IPPROTO_TCP, TCP_NOPUSH, | |
71 (const void *) &tcp_nopush, sizeof(int)); | |
72 } | |
73 | |
4 | 74 #elif (NGX_LINUX) |
0 | 75 |
50 | 76 int |
77 ngx_tcp_nopush(ngx_socket_t s) | |
0 | 78 { |
79 int cork; | |
80 | |
81 cork = 1; | |
82 | |
83 return setsockopt(s, IPPROTO_TCP, TCP_CORK, | |
84 (const void *) &cork, sizeof(int)); | |
85 } | |
86 | |
50 | 87 int |
88 ngx_tcp_push(ngx_socket_t s) | |
0 | 89 { |
90 int cork; | |
91 | |
92 cork = 0; | |
93 | |
94 return setsockopt(s, IPPROTO_TCP, TCP_CORK, | |
95 (const void *) &cork, sizeof(int)); | |
96 } | |
97 | |
98 #else | |
99 | |
50 | 100 int |
101 ngx_tcp_nopush(ngx_socket_t s) | |
0 | 102 { |
50 | 103 return 0; |
0 | 104 } |
105 | |
50 | 106 int |
107 ngx_tcp_push(ngx_socket_t s) | |
0 | 108 { |
50 | 109 return 0; |
0 | 110 } |
111 | |
112 #endif |