nginx-0.1.44-RELEASE import
*) Feature: the IMAP/POP3 proxy supports SSL.
*) Feature: the "proxy_timeout" directive of the ngx_imap_proxy_module.
*) Feature: the "userid_mark" directive.
*) Feature: the $remote_user variable value is determined independently
of authorization use.
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
index 7b34590..73deb9c 100644
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -99,5 +99,7 @@
extern char *malloc_options;
+#define NGX_HAVE_OS_SPECIFIC_INIT 1
+
#endif /* _NGX_FREEBSD_CONFIG_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_freebsd_init.c b/src/os/unix/ngx_freebsd_init.c
index ab002ae..8610a56 100644
--- a/src/os/unix/ngx_freebsd_init.c
+++ b/src/os/unix/ngx_freebsd_init.c
@@ -27,7 +27,7 @@
ngx_uint_t ngx_freebsd_use_tcp_nopush;
-ngx_os_io_t ngx_os_io = {
+static ngx_os_io_t ngx_freebsd_io = {
ngx_unix_recv,
ngx_readv_chain,
ngx_unix_send,
@@ -74,7 +74,8 @@
};
-void ngx_debug_init()
+void
+ngx_debug_init()
{
#if (NGX_DEBUG && !NGX_NO_DEBUG_MALLOC)
@@ -88,7 +89,8 @@
}
-ngx_int_t ngx_os_init(ngx_log_t *log)
+ngx_int_t
+ngx_os_specific_init(ngx_log_t *log)
{
int version, somaxconn;
size_t size;
@@ -223,12 +225,14 @@
ngx_tcp_nodelay_and_tcp_nopush = 1;
+ ngx_os_io = ngx_freebsd_io;
- return ngx_posix_init(log);
+ return NGX_OK;
}
-void ngx_os_status(ngx_log_t *log)
+void
+ngx_os_specific_status(ngx_log_t *log)
{
ngx_uint_t i;
@@ -251,7 +255,4 @@
sysctls[i].name, *sysctls[i].value);
}
}
-
-
- ngx_posix_status(log);
}
diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c
index 7ae5948..721335e 100644
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -56,7 +56,11 @@
#if (NGX_HAVE_KQUEUE)
- if ((ngx_event_flags & NGX_USE_KQUEUE_EVENT) && wev->pending_eof) {
+ if ((ngx_event_flags & NGX_USE_KQUEUE_EVENT)
+ && wev->pending_eof
+ /* FreeBSD 6.0 may erroneously report ETIMEDOUT */
+ && wev->kq_errno != NGX_ETIMEDOUT)
+ {
(void) ngx_connection_error(c, wev->kq_errno,
"kevent() reported about an closed connection");
wev->error = 1;
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index 7bd262a..d3ef325 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -103,4 +103,7 @@
#endif
+#define NGX_HAVE_OS_SPECIFIC_INIT 1
+
+
#endif /* _NGX_LINUX_CONFIG_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_linux_init.c b/src/os/unix/ngx_linux_init.c
index 56d9f15..8d2f791 100644
--- a/src/os/unix/ngx_linux_init.c
+++ b/src/os/unix/ngx_linux_init.c
@@ -14,7 +14,7 @@
int ngx_linux_rtsig_max;
-ngx_os_io_t ngx_os_io = {
+static ngx_os_io_t ngx_linux_io = {
ngx_unix_recv,
ngx_readv_chain,
ngx_unix_send,
@@ -29,7 +29,7 @@
ngx_int_t
-ngx_os_init(ngx_log_t *log)
+ngx_os_specific_init(ngx_log_t *log)
{
int name[2];
size_t len;
@@ -74,19 +74,18 @@
}
- return ngx_posix_init(log);
+ ngx_os_io = ngx_linux_io;
+
+ return NGX_OK;
}
void
-ngx_os_status(ngx_log_t *log)
+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);
ngx_log_error(NGX_LOG_NOTICE, log, 0, "sysctl(KERN_RTSIGMAX): %d",
ngx_linux_rtsig_max);
-
-
- ngx_posix_status(log);
}
diff --git a/src/os/unix/ngx_os.h b/src/os/unix/ngx_os.h
index 97a29e6..015d640 100644
--- a/src/os/unix/ngx_os.h
+++ b/src/os/unix/ngx_os.h
@@ -34,10 +34,9 @@
void ngx_debug_init(void);
ngx_int_t ngx_os_init(ngx_log_t *log);
void ngx_os_status(ngx_log_t *log);
+ngx_int_t ngx_os_specific_init(ngx_log_t *log);
+void ngx_os_specific_status(ngx_log_t *log);
ngx_int_t ngx_daemon(ngx_log_t *log);
-ngx_int_t ngx_posix_init(ngx_log_t *log);
-void ngx_posix_status(ngx_log_t *log);
-ngx_int_t ngx_posix_post_conf_init(ngx_log_t *log);
ssize_t ngx_unix_recv(ngx_connection_t *c, u_char *buf, size_t size);
diff --git a/src/os/unix/ngx_posix_config.h b/src/os/unix/ngx_posix_config.h
index 592ff76..dc4341a 100644
--- a/src/os/unix/ngx_posix_config.h
+++ b/src/os/unix/ngx_posix_config.h
@@ -102,7 +102,4 @@
#endif
-#define NGX_POSIX_IO 1
-
-
#endif /* _NGX_POSIX_CONFIG_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_posix_init.c b/src/os/unix/ngx_posix_init.c
index d0de5d5..c8b0548 100644
--- a/src/os/unix/ngx_posix_init.c
+++ b/src/os/unix/ngx_posix_init.c
@@ -6,6 +6,7 @@
#include <ngx_config.h>
#include <ngx_core.h>
+#include <nginx.h>
ngx_int_t ngx_ncpu;
@@ -17,8 +18,6 @@
struct rlimit rlmt;
-#if (NGX_POSIX_IO)
-
ngx_os_io_t ngx_os_io = {
ngx_unix_recv,
ngx_readv_chain,
@@ -28,75 +27,17 @@
};
-ngx_int_t ngx_os_init(ngx_log_t *log)
+ngx_int_t
+ngx_os_init(ngx_log_t *log)
{
- return ngx_posix_init(log);
-}
+ ngx_log_error(NGX_LOG_NOTICE, log, 0, NGINX_VER);
-
-void ngx_os_status(ngx_log_t *log)
-{
- ngx_posix_status(log);
-}
-
-
+#if (NGX_HAVE_OS_SPECIFIC_INIT)
+ if (ngx_os_specific_init(log) != NGX_OK) {
+ return NGX_ERROR;
+ }
#endif
-
-void ngx_signal_handler(int signo);
-
-
-typedef struct {
- int signo;
- char *signame;
- void (*handler)(int signo);
-} ngx_signal_t;
-
-
-ngx_signal_t signals[] = {
- { ngx_signal_value(NGX_RECONFIGURE_SIGNAL),
- "SIG" ngx_value(NGX_RECONFIGURE_SIGNAL),
- ngx_signal_handler },
-
- { ngx_signal_value(NGX_REOPEN_SIGNAL),
- "SIG" ngx_value(NGX_REOPEN_SIGNAL),
- ngx_signal_handler },
-
- { ngx_signal_value(NGX_NOACCEPT_SIGNAL),
- "SIG" ngx_value(NGX_NOACCEPT_SIGNAL),
- ngx_signal_handler },
-
- { ngx_signal_value(NGX_TERMINATE_SIGNAL),
- "SIG" ngx_value(NGX_TERMINATE_SIGNAL),
- ngx_signal_handler },
-
- { ngx_signal_value(NGX_SHUTDOWN_SIGNAL),
- "SIG" ngx_value(NGX_SHUTDOWN_SIGNAL),
- ngx_signal_handler },
-
- { ngx_signal_value(NGX_CHANGEBIN_SIGNAL),
- "SIG" ngx_value(NGX_CHANGEBIN_SIGNAL),
- ngx_signal_handler },
-
- { SIGALRM, "SIGALRM", ngx_signal_handler },
-
- { SIGINT, "SIGINT", ngx_signal_handler },
-
- { SIGIO, "SIGIO", ngx_signal_handler },
-
- { SIGCHLD, "SIGCHLD", ngx_signal_handler },
-
- { SIGPIPE, "SIGPIPE, SIG_IGN", SIG_IGN },
-
- { 0, NULL, NULL }
-};
-
-
-ngx_int_t ngx_posix_init(ngx_log_t *log)
-{
- ngx_signal_t *sig;
- struct sigaction sa;
-
ngx_init_setproctitle(log);
ngx_pagesize = getpagesize();
@@ -105,23 +46,12 @@
ngx_ncpu = 1;
}
- for (sig = signals; sig->signo != 0; sig++) {
- ngx_memzero(&sa, sizeof(struct sigaction));
- sa.sa_handler = sig->handler;
- sigemptyset(&sa.sa_mask);
- if (sigaction(sig->signo, &sa, NULL) == -1) {
- ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
- "sigaction(%s) failed", sig->signame);
- return NGX_ERROR;
- }
- }
-
if (getrlimit(RLIMIT_NOFILE, &rlmt) == -1) {
ngx_log_error(NGX_LOG_ALERT, log, errno,
"getrlimit(RLIMIT_NOFILE) failed)");
return NGX_ERROR;
}
-
+
ngx_max_sockets = rlmt.rlim_cur;
#if (NGX_HAVE_INHERITED_NONBLOCK)
@@ -134,157 +64,21 @@
}
-void ngx_posix_status(ngx_log_t *log)
+void
+ngx_os_status(ngx_log_t *log)
{
+#if (NGX_HAVE_OS_SPECIFIC_INIT)
+ ngx_os_specific_status(log);
+#endif
+
ngx_log_error(NGX_LOG_NOTICE, log, 0,
"getrlimit(RLIMIT_NOFILE): %r:%r",
rlmt.rlim_cur, rlmt.rlim_max);
}
-void ngx_signal_handler(int signo)
-{
- char *action;
- struct timeval tv;
- ngx_int_t ignore;
- ngx_err_t err;
- ngx_signal_t *sig;
-
- ignore = 0;
-
- err = ngx_errno;
-
- for (sig = signals; sig->signo != 0; sig++) {
- if (sig->signo == signo) {
- break;
- }
- }
-
- ngx_gettimeofday(&tv);
- ngx_time_update(tv.tv_sec);
-
- action = "";
-
- switch (ngx_process) {
-
- case NGX_PROCESS_MASTER:
- case NGX_PROCESS_SINGLE:
- switch (signo) {
-
- case ngx_signal_value(NGX_SHUTDOWN_SIGNAL):
- ngx_quit = 1;
- action = ", shutting down";
- break;
-
- case ngx_signal_value(NGX_TERMINATE_SIGNAL):
- case SIGINT:
- ngx_terminate = 1;
- action = ", exiting";
- break;
-
- case ngx_signal_value(NGX_NOACCEPT_SIGNAL):
- ngx_noaccept = 1;
- action = ", stop accepting connections";
- break;
-
- case ngx_signal_value(NGX_RECONFIGURE_SIGNAL):
- ngx_reconfigure = 1;
- action = ", reconfiguring";
- break;
-
- case ngx_signal_value(NGX_REOPEN_SIGNAL):
- ngx_reopen = 1;
- action = ", reopening logs";
- break;
-
- case ngx_signal_value(NGX_CHANGEBIN_SIGNAL):
- if (getppid() > 1 || ngx_new_binary > 0) {
-
- /*
- * Ignore the signal in the new binary if its parent is
- * not the init process, i.e. the old binary's process
- * is still running. Or ingore the signal in the old binary's
- * process if the new binary's process is already running.
- */
-
- action = ", ignoring";
- ignore = 1;
- break;
- }
-
- ngx_change_binary = 1;
- action = ", changing binary";
- break;
-
- case SIGALRM:
- if (!ngx_terminate) {
- ngx_timer = 1;
- action = ", shutting down old worker processes";
- }
-
- break;
-
- case SIGIO:
- ngx_sigio = 1;
- break;
-
- case SIGCHLD:
- ngx_reap = 1;
- break;
- }
-
- break;
-
- case NGX_PROCESS_WORKER:
- switch (signo) {
-
- case ngx_signal_value(NGX_NOACCEPT_SIGNAL):
- ngx_debug_quit = 1;
- case ngx_signal_value(NGX_SHUTDOWN_SIGNAL):
- ngx_quit = 1;
- action = ", shutting down";
- break;
-
- case ngx_signal_value(NGX_TERMINATE_SIGNAL):
- case SIGINT:
- ngx_terminate = 1;
- action = ", exiting";
- break;
-
- case ngx_signal_value(NGX_REOPEN_SIGNAL):
- ngx_reopen = 1;
- action = ", reopening logs";
- break;
-
- case ngx_signal_value(NGX_RECONFIGURE_SIGNAL):
- case ngx_signal_value(NGX_CHANGEBIN_SIGNAL):
- case SIGIO:
- action = ", ignoring";
- break;
- }
-
- break;
- }
-
- ngx_log_error(NGX_LOG_NOTICE, ngx_cycle->log, 0,
- "signal %d (%s) received%s", signo, sig->signame, action);
-
- if (ignore) {
- ngx_log_error(NGX_LOG_CRIT, ngx_cycle->log, 0,
- "the changing binary signal is ignored: "
- "you should shutdown or terminate "
- "before either old or new binary's process");
- }
-
- if (signo == SIGCHLD) {
- ngx_process_get_status();
- }
-
- ngx_set_errno(err);
-}
-
-
-ngx_int_t ngx_posix_post_conf_init(ngx_log_t *log)
+ngx_int_t
+ngx_posix_post_conf_init(ngx_log_t *log)
{
ngx_fd_t pp[2];
diff --git a/src/os/unix/ngx_process.c b/src/os/unix/ngx_process.c
index f9689c9..eaf7ae4 100644
--- a/src/os/unix/ngx_process.c
+++ b/src/os/unix/ngx_process.c
@@ -10,7 +10,17 @@
#include <ngx_channel.h>
+typedef struct {
+ int signo;
+ char *signame;
+ void (*handler)(int signo);
+} ngx_signal_t;
+
+
+
static void ngx_execute_proc(ngx_cycle_t *cycle, void *data);
+static void ngx_signal_handler(int signo);
+static void ngx_process_get_status(void);
int ngx_argc;
@@ -23,6 +33,45 @@
ngx_process_t ngx_processes[NGX_MAX_PROCESSES];
+ngx_signal_t signals[] = {
+ { ngx_signal_value(NGX_RECONFIGURE_SIGNAL),
+ "SIG" ngx_value(NGX_RECONFIGURE_SIGNAL),
+ ngx_signal_handler },
+
+ { ngx_signal_value(NGX_REOPEN_SIGNAL),
+ "SIG" ngx_value(NGX_REOPEN_SIGNAL),
+ ngx_signal_handler },
+
+ { ngx_signal_value(NGX_NOACCEPT_SIGNAL),
+ "SIG" ngx_value(NGX_NOACCEPT_SIGNAL),
+ ngx_signal_handler },
+
+ { ngx_signal_value(NGX_TERMINATE_SIGNAL),
+ "SIG" ngx_value(NGX_TERMINATE_SIGNAL),
+ ngx_signal_handler },
+
+ { ngx_signal_value(NGX_SHUTDOWN_SIGNAL),
+ "SIG" ngx_value(NGX_SHUTDOWN_SIGNAL),
+ ngx_signal_handler },
+
+ { ngx_signal_value(NGX_CHANGEBIN_SIGNAL),
+ "SIG" ngx_value(NGX_CHANGEBIN_SIGNAL),
+ ngx_signal_handler },
+
+ { SIGALRM, "SIGALRM", ngx_signal_handler },
+
+ { SIGINT, "SIGINT", ngx_signal_handler },
+
+ { SIGIO, "SIGIO", ngx_signal_handler },
+
+ { SIGCHLD, "SIGCHLD", ngx_signal_handler },
+
+ { SIGPIPE, "SIGPIPE, SIG_IGN", SIG_IGN },
+
+ { 0, NULL, NULL }
+};
+
+
ngx_pid_t
ngx_spawn_process(ngx_cycle_t *cycle, ngx_spawn_proc_pt proc, void *data,
char *name, ngx_int_t respawn)
@@ -208,7 +257,171 @@
}
+ngx_int_t
+ngx_init_signals(ngx_log_t *log)
+{
+ ngx_signal_t *sig;
+ struct sigaction sa;
+
+ for (sig = signals; sig->signo != 0; sig++) {
+ ngx_memzero(&sa, sizeof(struct sigaction));
+ sa.sa_handler = sig->handler;
+ sigemptyset(&sa.sa_mask);
+ if (sigaction(sig->signo, &sa, NULL) == -1) {
+ ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
+ "sigaction(%s) failed", sig->signame);
+ return NGX_ERROR;
+ }
+ }
+
+ return NGX_OK;
+}
+
+
void
+ngx_signal_handler(int signo)
+{
+ char *action;
+ struct timeval tv;
+ ngx_int_t ignore;
+ ngx_err_t err;
+ ngx_signal_t *sig;
+
+ ignore = 0;
+
+ err = ngx_errno;
+
+ for (sig = signals; sig->signo != 0; sig++) {
+ if (sig->signo == signo) {
+ break;
+ }
+ }
+
+ ngx_gettimeofday(&tv);
+ ngx_time_update(tv.tv_sec);
+
+ action = "";
+
+ switch (ngx_process) {
+
+ case NGX_PROCESS_MASTER:
+ case NGX_PROCESS_SINGLE:
+ switch (signo) {
+
+ case ngx_signal_value(NGX_SHUTDOWN_SIGNAL):
+ ngx_quit = 1;
+ action = ", shutting down";
+ break;
+
+ case ngx_signal_value(NGX_TERMINATE_SIGNAL):
+ case SIGINT:
+ ngx_terminate = 1;
+ action = ", exiting";
+ break;
+
+ case ngx_signal_value(NGX_NOACCEPT_SIGNAL):
+ ngx_noaccept = 1;
+ action = ", stop accepting connections";
+ break;
+
+ case ngx_signal_value(NGX_RECONFIGURE_SIGNAL):
+ ngx_reconfigure = 1;
+ action = ", reconfiguring";
+ break;
+
+ case ngx_signal_value(NGX_REOPEN_SIGNAL):
+ ngx_reopen = 1;
+ action = ", reopening logs";
+ break;
+
+ case ngx_signal_value(NGX_CHANGEBIN_SIGNAL):
+ if (getppid() > 1 || ngx_new_binary > 0) {
+
+ /*
+ * Ignore the signal in the new binary if its parent is
+ * not the init process, i.e. the old binary's process
+ * is still running. Or ingore the signal in the old binary's
+ * process if the new binary's process is already running.
+ */
+
+ action = ", ignoring";
+ ignore = 1;
+ break;
+ }
+
+ ngx_change_binary = 1;
+ action = ", changing binary";
+ break;
+
+ case SIGALRM:
+ if (!ngx_terminate) {
+ ngx_timer = 1;
+ action = ", shutting down old worker processes";
+ }
+
+ break;
+
+ case SIGIO:
+ ngx_sigio = 1;
+ break;
+
+ case SIGCHLD:
+ ngx_reap = 1;
+ break;
+ }
+
+ break;
+
+ case NGX_PROCESS_WORKER:
+ switch (signo) {
+
+ case ngx_signal_value(NGX_NOACCEPT_SIGNAL):
+ ngx_debug_quit = 1;
+ case ngx_signal_value(NGX_SHUTDOWN_SIGNAL):
+ ngx_quit = 1;
+ action = ", shutting down";
+ break;
+
+ case ngx_signal_value(NGX_TERMINATE_SIGNAL):
+ case SIGINT:
+ ngx_terminate = 1;
+ action = ", exiting";
+ break;
+
+ case ngx_signal_value(NGX_REOPEN_SIGNAL):
+ ngx_reopen = 1;
+ action = ", reopening logs";
+ break;
+
+ case ngx_signal_value(NGX_RECONFIGURE_SIGNAL):
+ case ngx_signal_value(NGX_CHANGEBIN_SIGNAL):
+ case SIGIO:
+ action = ", ignoring";
+ break;
+ }
+
+ break;
+ }
+
+ ngx_log_error(NGX_LOG_NOTICE, ngx_cycle->log, 0,
+ "signal %d (%s) received%s", signo, sig->signame, action);
+
+ if (ignore) {
+ ngx_log_error(NGX_LOG_CRIT, ngx_cycle->log, 0,
+ "the changing binary signal is ignored: "
+ "you should shutdown or terminate "
+ "before either old or new binary's process");
+ }
+
+ if (signo == SIGCHLD) {
+ ngx_process_get_status();
+ }
+
+ ngx_set_errno(err);
+}
+
+
+static void
ngx_process_get_status(void)
{
int status;
diff --git a/src/os/unix/ngx_process.h b/src/os/unix/ngx_process.h
index 25bfa96..3684b15 100644
--- a/src/os/unix/ngx_process.h
+++ b/src/os/unix/ngx_process.h
@@ -54,7 +54,7 @@
ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle,
ngx_spawn_proc_pt proc, void *data, char *name, ngx_int_t respawn);
ngx_pid_t ngx_execute(ngx_cycle_t *cycle, ngx_exec_ctx_t *ctx);
-void ngx_process_get_status(void);
+ngx_int_t ngx_init_signals(ngx_log_t *log);
void ngx_debug_point(void);
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index 437e506..84a4c84 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -83,4 +83,7 @@
#endif
+#define NGX_HAVE_OS_SPECIFIC_INIT 1
+
+
#endif /* _NGX_SOLARIS_CONFIG_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_solaris_init.c b/src/os/unix/ngx_solaris_init.c
index 163adaa..93d0225 100644
--- a/src/os/unix/ngx_solaris_init.c
+++ b/src/os/unix/ngx_solaris_init.c
@@ -13,7 +13,7 @@
char ngx_solaris_version[50];
-ngx_os_io_t ngx_os_io = {
+static ngx_os_io_t ngx_solaris_io = {
ngx_unix_recv,
ngx_readv_chain,
ngx_unix_send,
@@ -27,10 +27,11 @@
};
-ngx_int_t ngx_os_init(ngx_log_t *log)
+ngx_int_t
+ngx_os_specific_init(ngx_log_t *log)
{
if (sysinfo(SI_SYSNAME, ngx_solaris_sysname, sizeof(ngx_solaris_sysname))
- == -1)
+ == -1)
{
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
"sysinfo(SI_SYSNAME) failed");
@@ -38,7 +39,7 @@
}
if (sysinfo(SI_RELEASE, ngx_solaris_release, sizeof(ngx_solaris_release))
- == -1)
+ == -1)
{
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
"sysinfo(SI_RELEASE) failed");
@@ -46,7 +47,7 @@
}
if (sysinfo(SI_VERSION, ngx_solaris_version, sizeof(ngx_solaris_version))
- == -1)
+ == -1)
{
ngx_log_error(NGX_LOG_ALERT, log, ngx_errno,
"sysinfo(SI_SYSNAME) failed");
@@ -54,11 +55,14 @@
}
- return ngx_posix_init(log);
+ ngx_os_io = ngx_solaris_io;
+
+ return NGX_OK;;
}
-void ngx_os_status(ngx_log_t *log)
+void
+ngx_os_specific_status(ngx_log_t *log)
{
ngx_log_error(NGX_LOG_NOTICE, log, 0, "OS: %s %s",
@@ -66,6 +70,4 @@
ngx_log_error(NGX_LOG_NOTICE, log, 0, "version: %s",
ngx_solaris_version);
-
- ngx_posix_status(log);
}