aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix/ngx_files.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2006-02-08 15:33:12 +0000
committerIgor Sysoev <igor@sysoev.ru>2006-02-08 15:33:12 +0000
commitffe714403d604b385c89daa7fe5a83860a672a54 (patch)
tree24ce46a2354a79212f91fdbc3d6045ea340c3f12 /src/os/unix/ngx_files.c
parent2446d5d6adf67d81883024ffb20ec21d146c0450 (diff)
downloadnginx-ffe714403d604b385c89daa7fe5a83860a672a54.tar.gz
nginx-ffe714403d604b385c89daa7fe5a83860a672a54.zip
nginx-0.3.27-RELEASE importrelease-0.3.27
*) Change: the "variables_hash_max_size" and "variables_hash_bucket_size" directives. *) Feature: the $body_bytes_sent variable can be used not only in the "log_format" directive. *) Feature: the $ssl_protocol and $ssl_cipher variables. *) Feature: the cache line size detection for widespread CPUs at start time. *) Feature: now the "accept_mutex" directive is supported using fcntl(2) on platforms different from i386, amd64, sparc64, and ppc. *) Feature: the "lock_file" directive and the --with-lock-path=PATH autoconfiguration directive. *) Bugfix: if the HTTPS protocol was used in the "proxy_pass" directive then the requests with the body was not transferred.
Diffstat (limited to 'src/os/unix/ngx_files.c')
-rw-r--r--src/os/unix/ngx_files.c61
1 files changed, 30 insertions, 31 deletions
diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c
index b5a807bb6..f89147df1 100644
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -235,59 +235,58 @@ ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
}
-ngx_int_t
-ngx_lock_file(ngx_file_t *file)
+ngx_err_t
+ngx_trylock_fd(ngx_fd_t fd)
{
- ngx_err_t err;
struct flock fl;
- fl.l_whence = SEEK_SET;
+ fl.l_start = 0;
fl.l_len = 0;
fl.l_pid = 0;
fl.l_type = F_WRLCK;
- fl.l_start = 0;
+ fl.l_whence = SEEK_SET;
- if (fcntl(file->fd, F_SETLK, &fl) == -1) {
- err = ngx_errno;
+ if (fcntl(fd, F_SETLK, &fl) == -1) {
+ return ngx_errno;
+ }
- if (err == NGX_EAGAIN) {
- return NGX_BUSY;
- }
+ return 0;
+}
- ngx_log_error(NGX_LOG_ALERT, file->log, err,
- "fcntl(%s, F_SETLK, F_WRLCK) failed", file->name.data);
- return NGX_ERROR;
+ngx_err_t
+ngx_lock_fd(ngx_fd_t fd)
+{
+ struct flock fl;
+
+ fl.l_start = 0;
+ fl.l_len = 0;
+ fl.l_pid = 0;
+ fl.l_type = F_WRLCK;
+ fl.l_whence = SEEK_SET;
+
+ if (fcntl(fd, F_SETLKW, &fl) == -1) {
+ return ngx_errno;
}
- return NGX_OK;
+ return 0;
}
-ngx_int_t
-ngx_unlock_file(ngx_file_t *file)
+ngx_err_t
+ngx_unlock_fd(ngx_fd_t fd)
{
- ngx_err_t err;
struct flock fl;
- fl.l_whence = SEEK_SET;
+ fl.l_start = 0;
fl.l_len = 0;
fl.l_pid = 0;
fl.l_type = F_UNLCK;
- fl.l_start = 0;
-
- if (fcntl(file->fd, F_SETLK, &fl) == -1) {
- err = ngx_errno;
-
- if (err == NGX_EAGAIN) {
- return NGX_BUSY;
- }
-
- ngx_log_error(NGX_LOG_ALERT, file->log, err,
- "fcntl(%s, F_SETLK, F_UNLCK) failed", file->name.data);
+ fl.l_whence = SEEK_SET;
- return NGX_ERROR;
+ if (fcntl(fd, F_SETLK, &fl) == -1) {
+ return ngx_errno;
}
- return NGX_OK;
+ return 0;
}