Mercurial > hg > nginx-vendor-1-0
view src/os/unix/ngx_linux_init.c @ 632:65fd8be45530 NGINX_1_0_6
nginx 1.0.6
*) Feature: cache loader run time decrease.
*) Feature: loading time decrease of configuration with large number of
HTTPS sites.
*) Feature: now nginx supports ECDHE key exchange ciphers.
Thanks to Adrian Kotelba.
*) Feature: the "lingering_close" directive.
*) Feature: now shared zones and caches use POSIX semaphores on Solaris.
Thanks to Den Ivanov.
*) Bugfix: nginx could not be built on Linux 3.0.
*) Bugfix: a segmentation fault might occur in a worker process if
"fastcgi/scgi/uwsgi_param" directives were used with values starting
with "HTTP_"; the bug had appeared in 0.8.40.
*) Bugfix: in closing connection for pipelined requests.
*) Bugfix: nginx did not disable gzipping if client sent "gzip;q=0" in
"Accept-Encoding" request header line.
*) Bugfix: in timeout in unbuffered proxied mode.
*) Bugfix: memory leaks when a "proxy_pass" directive contains variables
and proxies to an HTTPS backend.
*) Bugfix: in parameter validaiton of a "proxy_pass" directive with
variables.
Thanks to Lanshun Zhou.
*) Bugfix: SSL did not work on QNX.
*) Bugfix: SSL modules could not be built by gcc 4.6 without
--with-debug option.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Fri, 29 Jul 2011 00:00:00 +0400 |
parents | babd3d9efb62 |
children | ad25218fd14b |
line wrap: on
line source
/* * Copyright (C) Igor Sysoev */ #include <ngx_config.h> #include <ngx_core.h> u_char ngx_linux_kern_ostype[50]; u_char ngx_linux_kern_osrelease[50]; int ngx_linux_rtsig_max; static ngx_os_io_t ngx_linux_io = { ngx_unix_recv, ngx_readv_chain, ngx_udp_unix_recv, ngx_unix_send, #if (NGX_HAVE_SENDFILE) ngx_linux_sendfile_chain, NGX_IO_SENDFILE #else ngx_writev_chain, 0 #endif }; ngx_int_t ngx_os_specific_init(ngx_log_t *log) { struct utsname u; if (uname(&u) == -1) { ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "uname() failed"); return NGX_ERROR; } (void) ngx_cpystrn(ngx_linux_kern_ostype, (u_char *) u.sysname, sizeof(ngx_linux_kern_ostype)); (void) ngx_cpystrn(ngx_linux_kern_osrelease, (u_char *) u.release, sizeof(ngx_linux_kern_osrelease)); #if (NGX_HAVE_RTSIG) { int name[2]; size_t len; ngx_err_t err; name[0] = CTL_KERN; name[1] = KERN_RTSIGMAX; len = sizeof(ngx_linux_rtsig_max); if (sysctl(name, 2, &ngx_linux_rtsig_max, &len, NULL, 0) == -1) { err = ngx_errno; if (err != NGX_ENOTDIR && err != NGX_ENOSYS) { ngx_log_error(NGX_LOG_ALERT, log, err, "sysctl(KERN_RTSIGMAX) failed"); return NGX_ERROR; } ngx_linux_rtsig_max = 0; } } #endif ngx_os_io = ngx_linux_io; return NGX_OK; } void ngx_os_specific_status(ngx_log_t *log) { ngx_log_error(NGX_LOG_NOTICE, log, 0, "OS: %s %s", ngx_linux_kern_ostype, ngx_linux_kern_osrelease); #if (NGX_HAVE_RTSIG) ngx_log_error(NGX_LOG_NOTICE, log, 0, "sysctl(KERN_RTSIGMAX): %d", ngx_linux_rtsig_max); #endif }