comparison src/os/unix/ngx_freebsd_init.c @ 4226:003f0f341edf

Fixed range checking for the "somaxconn" sysctl.
author Ruslan Ermilov <ru@nginx.com>
date Tue, 25 Oct 2011 13:48:05 +0000
parents 1b779cb69dc8
children d620f497c50f
comparison
equal deleted inserted replaced
4225:016352c19049 4226:003f0f341edf
96 96
97 97
98 ngx_int_t 98 ngx_int_t
99 ngx_os_specific_init(ngx_log_t *log) 99 ngx_os_specific_init(ngx_log_t *log)
100 { 100 {
101 int version, somaxconn; 101 int version;
102 size_t size; 102 size_t size;
103 ngx_err_t err; 103 ngx_err_t err;
104 ngx_uint_t i; 104 ngx_uint_t i;
105 105
106 size = sizeof(ngx_freebsd_kern_ostype); 106 size = sizeof(ngx_freebsd_kern_ostype);
208 208
209 } else { 209 } else {
210 ngx_ncpu = ngx_freebsd_hw_ncpu; 210 ngx_ncpu = ngx_freebsd_hw_ncpu;
211 } 211 }
212 212
213 somaxconn = version < 600008 ? 32676 : 65535; 213 if (version < 600008 && ngx_freebsd_kern_ipc_somaxconn > 32767) {
214
215 if (ngx_freebsd_kern_ipc_somaxconn > somaxconn) {
216 ngx_log_error(NGX_LOG_ALERT, log, 0, 214 ngx_log_error(NGX_LOG_ALERT, log, 0,
217 "sysctl kern.ipc.somaxconn must be no more than %d", 215 "sysctl kern.ipc.somaxconn must be less than 32768");
218 somaxconn);
219 return NGX_ERROR; 216 return NGX_ERROR;
220 } 217 }
221 218
222 ngx_tcp_nodelay_and_tcp_nopush = 1; 219 ngx_tcp_nodelay_and_tcp_nopush = 1;
223 220