aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix
Commit message (Collapse)AuthorAge
* Core: fixed ngx_write_chain_to_file() with IOV_MAX reached.Maxim Dounin2012-11-26
| | | | | | | Catched by dav_chunked.t on Solaris. In released versions this might potentially result in corruption of complex protocol responses if they were written to disk and there were more distinct buffers than IOV_MAX in a single write.
* Core: added debug logging of writev() in ngx_write_chain_to_file().Maxim Dounin2012-11-21
|
* Fixed failure to start cache manager and cache loader processesIgor Sysoev2012-11-20
| | | | if there were more than 512 listening sockets in configuration.
* Fixed setting of CPU affinity on respawn of dead worker processes.Ruslan Ermilov2012-11-16
| | | | | Worker processes are now made aware of their sequential number needed to select CPU affinity mask. This replaces a workaround from r4865.
* Removed conditional compilation from waitpid() error test.Maxim Dounin2012-10-18
| | | | | | There are reports that call to a signal handler for an exited process despite waitpid() already called for the process may happen on Linux as well.
* Correct plural form for "path" in the whole source base.Andrey Belov2012-09-28
|
* Added clearing of cpu_affinity after process spawn.Maxim Dounin2012-09-26
| | | | | | | | | This fixes unwanted/incorrect cpu_affinity use on dead worker processes respawn. While this is not ideal, it's expected to be better when previous situation where multiple processes were spawn with identical CPU affinity set. Reported by Charles Chen.
* Explicitly ignore returned value from unlink() in ngx_open_tempfile().Andrey Belov2012-08-06
| | | | | | | | The only thing we could potentially do here in case of error returned is to complain to error log, but we don't have log structure available here due to interface limitations. Prodded by Coverity.
* Fixed compilation with -Wmissing-prototypes.Ruslan Ermilov2012-07-24
|
* Made sure to initialize the entire "struct flock" allocated on stack.Ruslan Ermilov2012-07-03
|
* Fixed return type of ngx_strerror_init().Maxim Dounin2012-06-18
|
* Fixed "sendmsg() failed" alerts on HP-UX.Maxim Dounin2012-06-18
| | | | | | | | HP-UX needs _HPUX_ALT_XOPEN_SOCKET_API to be defined to be able to use various POSIX versions of networking functions. Notably sendmsg() resulted in "sendmsg() failed (9: Bad file number)" alerts without it. See xopen_networking(7) for more details.
* Fixed segfault with poll and resolver used.Maxim Dounin2012-06-18
| | | | | | Poll event method needs ngx_cycle->files to work, and use of ngx_exit_cycle without files set caused null pointer dereference in resolver's cleanup on udp socket close.
* Fixed compilation with -DNGX_DEBUG_MALLOC on FreeBSD 10.Maxim Dounin2012-05-23
| | | | | After jemalloc 3.0.0 import there is no _malloc_options symbol, it has been replaced with the malloc_conf one with a different syntax.
* Accept moderation in case of EMFILE/ENFILE.Maxim Dounin2012-05-11
| | | | | | | | | | | | | | | In case of EMFILE/ENFILE returned from accept() we disable accept events, and (in case of no accept mutex used) arm timer to re-enable them later. With accept mutex we just drop it, and rely on normal accept mutex handling to re-enable accept events once it's acquired again. As we now handle errors in question, logging level was changed to "crit" (instead of "alert" used for unknown errors). Note: the code might call ngx_enable_accept_events() multiple times if there are many listen sockets. The ngx_enable_accept_events() function was modified to check if connection is already active (via c->read->active) and skip it then, thus making multiple calls safe.
* Fixed ngx_readv_chain() to honor IOV_MAX (ticket #14).Maxim Dounin2012-04-17
| | | | | | Not using full chain passed is ok as consumers are expected to check event's ready flag to determine if another call is needed, not the returned size.
* IOV_MAX handling microoptimization.Maxim Dounin2012-04-17
| | | | | | | | We now stop on IOV_MAX iovec entries only if we are going to add new one, i.e. next buffer can't be coalesced into last iovec. This also fixes incorrect checks for trailer creation on FreeBSD and Mac OS X, header.nelts was checked instead of trailer.nelts.
* Fixed loop in ngx_writev_chain() and ngx_solaris_sendfilev_chain().Maxim Dounin2012-04-17
| | | | | | | The "complete" flag wasn't cleared on loop iteration start, resulting in broken behaviour if there were more than IOV_MAX buffers and first iteration was fully completed (and hence the "complete" flag was set to 1).
* Style: the function type should be on a line by itselfMaxim Konovalov2012-04-05
| | | | preceding the function. No functional changes.
* Fixed spelling in multiline C comments.Ruslan Ermilov2012-04-03
|
* Fixed unconditional MAX_PATH usage (ticket #22).Maxim Dounin2012-03-27
| | | | | | POSIX doesn't require it to be defined, and Debian GNU/Hurd doesn't define it. Note that if there is no MAX_PATH defined we have to use realpath() with NULL argument and free() the result.
* Added explicit include of time.h.Maxim Dounin2012-03-27
| | | | | | Most of the systems have it included due to namespace pollution, but relying on this is a bad idea. Explicit include is required for at least Debian GNU/Hurd.
* worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.Ruslan Ermilov2012-03-21
|
* Whitespace fixes.Maxim Dounin2012-03-05
|
* Added msleep() on reload to allow new processes to start.Maxim Dounin2012-02-28
| | | | | | | This is expected to ensure smoother operation on reload (and with less chance of listen queue overflows). Prodded by Igor Sysoev.
* Fixed spelling in single-line comments.Ruslan Ermilov2012-02-28
|
* Workaround for fs_size on ZFS (ticket #46).Maxim Dounin2012-02-28
| | | | | | | | | | ZFS reports incorrect st_blocks until file settles on disk, and this may take a while (i.e. just after creation of a file the st_blocks value is incorrect). As a workaround we now use st_blocks only if st_blocks * 512 > st_size, this should fix ZFS problems while still preserving accuracy for other filesystems. The problem had appeared in r3900 (1.0.1).
* Disable symlinks: use O_SEARCH|O_DIRECTORY to open path components.Valentin Bartenev2012-02-21
|
* Disable symlinks: added explicit cast of AT_FDCWD (ticket #111).Maxim Dounin2012-02-20
| | | | | | Solaris has AT_FDCWD defined to unsigned value, and comparison of a file descriptor with it causes warnings in modern versions of gcc. Explicitly cast AT_FDCWD to ngx_fd_t to resolve these warnings.
* Added openat()/fstatat().Andrey Belov2012-02-13
|
* Added ngx_ncpu detection for most *nix platforms.Valentin Bartenev2012-02-10
| | | | | This inaccurate detection by using sysconf(_SC_NPROCESSORS_ONLN) can improve usage of the mutex lock optimization on multicore systems.
* Fixed AIO error handling on FreeBSD.Maxim Dounin2012-01-30
| | | | | | | | | The aio_return() must be called regardless of the error returned by aio_error(). Not calling it resulted in various problems up to segmentation faults (as AIO events are level-triggered and were reported again and again). Additionally, in "aio sendfile" case r->blocked was incremented in case of error returned from ngx_file_aio_read(), thus causing request hangs.
* Copyright updated.Maxim Konovalov2012-01-18
|
* Fixed sched_setaffinity(2) to correctly pass size.Maxim Dounin2012-01-16
| | | | | | Second argument (cpusetsize) is size in bytes, not in bits. Previously used constant 32 resulted in reading of uninitialized memory and caused EINVAL to be returned on some Linux kernels.
* Microoptimization of sendfile(2) usage under FreeBSD.Maxim Dounin2011-12-11
| | | | | | | FreeBSD kernel checks headers/trailers pointer against NULL, not corresponding count. Passing NULL if there are no headers/trailers helps to avoid unneeded work in kernel, as well as unexpected 0 bytes GIO in traces.
* Added (void) as we intentionally ignore returned values.Maxim Dounin2011-11-28
| | | | Requested by Igor Sysoev.
* Unlock of shared memory zones on process crash.Maxim Dounin2011-11-23
| | | | | | | | If process exited abnormally while holding lock on some shared memory zone - unlock it. It may be not safe thing to do (as crash with lock held may result in corrupted shared memory structure, and other processes will subsequently crash while trying to access shared data), therefore complain loudly if unlock succeeds.
* Added shmtx interface to forcibly unlock mutexes.Maxim Dounin2011-11-23
| | | | | | | | | | | It is currently used from master process on abnormal worker termination to unlock accept mutex (unlocking of accept mutex was broken in 1.0.2). It is expected to be used in the future to unlock other mutexes as well. Shared mutex code was rewritten to make this possible in a safe way, i.e. with a check if lock was actually held by the exited process. We again use pid to lock mutex, and use separate atomic variable for a count of processes waiting in sem_wait().
* FreeBSD 10-current has recently gotten POSIX_FADV_* macros.Maxim Konovalov2011-11-18
| | | | | | A fix for the broken build applied. Patch from Igor Sysoev.
* Introduction of simple ngx_write_stderr() instead of ngx_log_stderr()Igor Sysoev2011-11-14
| | | | | for output of ./configure options, etc., since ngx_log_stderr() output length is limited by 2048 characters defined as NGX_MAX_ERROR_STR.
* Fixed range checking for the "somaxconn" sysctl.Ruslan Ermilov2011-10-25
|
* malloc() debugging on MacOSX.Igor Sysoev2011-10-24
|
* Fixed another return in unix ngx_write_chain_to_file().Maxim Dounin2011-10-21
| | | | | Previous patch missed special case for one iovec, it needs total bytes written to be returned as well.
* Fixed unix ngx_write_chain_to_file() to return total bytes written.Maxim Dounin2011-10-20
| | | | | | Previously result of last iteration's writev() was returned. This was unnoticed as return value was only used if chain contained only one or two buffers.
* Replaced "can not" with "cannot" and "could not" in a bunch of places.Ruslan Ermilov2011-09-19
| | | | Fixed nearby grammar errors.
* Fixing Linux AIO syscalls return value handling:Igor Sysoev2011-09-16
| | | | | | | syscall(2) uses usual libc convention, it returns -1 on error and sets errno. Obsolete _syscall(2) returns negative value of error. Thanks to Hagai Avrahami.
* In Mac OS X Lion, Apple deprecated the use of the system OpenSSL libraryRuslan Ermilov2011-09-13
| | | | | in favour of their CommonCrypto library. This change adds a work-around that allows nginx to still be built on Lion with OpenSSL.
* Bugfix: open_file_cache lost is_directio flag.Maxim Dounin2011-09-05
| | | | | | On file retest open_file_cache lost is_directio if file wasn't changed. This caused unaligned operations under Linux to fail with EINVAL. It wasn't noticeable with AIO though, as errors wasn't properly logged.
* SIGWINCH/NOACCEPT signal is disabled now in non-daemon mode.Igor Sysoev2011-08-22
| | | | | | | Non-daemon mode is currently used by supervisord, daemontools and so on or during debugging. The NOACCEPT signal is only used for online upgrade which is not supported when nginx is run under supervisord, etc., so this change should not break existant setups.
* Move SO_ACCEPTFILTER and TCP_DEFER_ACCEPT checks into configure.Maxim Dounin2011-08-21
| | | | | | | NetBSD 5.0+ has SO_ACCEPTFILTER support merged from FreeBSD, and having accept filter check in FreeBSD-specific ngx_freebsd_config.h prevents it from being used on NetBSD. Therefore move the check into configure (and do the same for Linux-specific TCP_DEFER_ACCEPT, just to be in line).