summaryrefslogtreecommitdiffstats
path: root/usr.sbin/nginx/src/core
diff options
context:
space:
mode:
authorrobert <robert@openbsd.org>2013-03-17 16:05:30 +0000
committerrobert <robert@openbsd.org>2013-03-17 16:05:30 +0000
commit9f3c3c8525eca9911b66de0aa79e1d7be73c5c8b (patch)
treeb011d550d41b8572004322c2189b1dff46623967 /usr.sbin/nginx/src/core
parentAvoid namespace pollution from <powerpc/cpu.h>. (diff)
downloadwireguard-openbsd-9f3c3c8525eca9911b66de0aa79e1d7be73c5c8b.tar.xz
wireguard-openbsd-9f3c3c8525eca9911b66de0aa79e1d7be73c5c8b.zip
update to 1.2.7
Diffstat (limited to 'usr.sbin/nginx/src/core')
-rw-r--r--usr.sbin/nginx/src/core/nginx.h4
-rw-r--r--usr.sbin/nginx/src/core/ngx_conf_file.c23
-rw-r--r--usr.sbin/nginx/src/core/ngx_conf_file.h11
-rw-r--r--usr.sbin/nginx/src/core/ngx_cycle.c27
-rw-r--r--usr.sbin/nginx/src/core/ngx_file.c8
-rw-r--r--usr.sbin/nginx/src/core/ngx_inet.c2
-rw-r--r--usr.sbin/nginx/src/core/ngx_inet.h2
-rw-r--r--usr.sbin/nginx/src/core/ngx_log.c10
-rw-r--r--usr.sbin/nginx/src/core/ngx_radix_tree.c207
-rw-r--r--usr.sbin/nginx/src/core/ngx_radix_tree.h9
10 files changed, 234 insertions, 69 deletions
diff --git a/usr.sbin/nginx/src/core/nginx.h b/usr.sbin/nginx/src/core/nginx.h
index 4d59895ed20..14068e2b5e3 100644
--- a/usr.sbin/nginx/src/core/nginx.h
+++ b/usr.sbin/nginx/src/core/nginx.h
@@ -9,8 +9,8 @@
#define _NGINX_H_INCLUDED_
-#define nginx_version 1002006
-#define NGINX_VERSION "1.2.6"
+#define nginx_version 1002007
+#define NGINX_VERSION "1.2.7"
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
diff --git a/usr.sbin/nginx/src/core/ngx_conf_file.c b/usr.sbin/nginx/src/core/ngx_conf_file.c
index 6da2dae809d..ed7a2ce920d 100644
--- a/usr.sbin/nginx/src/core/ngx_conf_file.c
+++ b/usr.sbin/nginx/src/core/ngx_conf_file.c
@@ -945,7 +945,8 @@ ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name)
file->name = *name;
}
- file->buffer = NULL;
+ file->flush = NULL;
+ file->data = NULL;
return file;
}
@@ -954,7 +955,6 @@ ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name)
static void
ngx_conf_flush_files(ngx_cycle_t *cycle)
{
- ssize_t n, len;
ngx_uint_t i;
ngx_list_part_t *part;
ngx_open_file_t *file;
@@ -975,23 +975,8 @@ ngx_conf_flush_files(ngx_cycle_t *cycle)
i = 0;
}
- len = file[i].pos - file[i].buffer;
-
- if (file[i].buffer == NULL || len == 0) {
- continue;
- }
-
- n = ngx_write_fd(file[i].fd, file[i].buffer, len);
-
- if (n == NGX_FILE_ERROR) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
- ngx_write_fd_n " to \"%s\" failed",
- file[i].name.data);
-
- } else if (n != len) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- ngx_write_fd_n " to \"%s\" was incomplete: %z of %uz",
- file[i].name.data, n, len);
+ if (file[i].flush) {
+ file[i].flush(&file[i], cycle->log);
}
}
}
diff --git a/usr.sbin/nginx/src/core/ngx_conf_file.h b/usr.sbin/nginx/src/core/ngx_conf_file.h
index 64a9e8fc8d9..237e6ecea6e 100644
--- a/usr.sbin/nginx/src/core/ngx_conf_file.h
+++ b/usr.sbin/nginx/src/core/ngx_conf_file.h
@@ -91,17 +91,8 @@ struct ngx_open_file_s {
ngx_fd_t fd;
ngx_str_t name;
- u_char *buffer;
- u_char *pos;
- u_char *last;
-
-#if 0
- /* e.g. append mode, error_log */
- ngx_uint_t flags;
- /* e.g. reopen db file */
- ngx_uint_t (*handler)(void *data, ngx_open_file_t *file);
+ void (*flush)(ngx_open_file_t *file, ngx_log_t *log);
void *data;
-#endif
};
diff --git a/usr.sbin/nginx/src/core/ngx_cycle.c b/usr.sbin/nginx/src/core/ngx_cycle.c
index 7d5a8fa4455..5ecdd68a4dc 100644
--- a/usr.sbin/nginx/src/core/ngx_cycle.c
+++ b/usr.sbin/nginx/src/core/ngx_cycle.c
@@ -1121,7 +1121,6 @@ ngx_test_lockfile(u_char *file, ngx_log_t *log)
void
ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user)
{
- ssize_t n, len;
ngx_fd_t fd;
ngx_uint_t i;
ngx_list_part_t *part;
@@ -1141,32 +1140,16 @@ ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user)
i = 0;
}
- if (file[i].name.len == 0) {
- continue;
- }
-
- len = file[i].pos - file[i].buffer;
-
if ((ngx_process == NGX_PROCESS_WORKER) && ngx_chrooted) {
ngx_strip_chroot(&file[i].name);
}
- if (file[i].buffer && len != 0) {
-
- n = ngx_write_fd(file[i].fd, file[i].buffer, len);
-
- if (n == NGX_FILE_ERROR) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
- ngx_write_fd_n " to \"%s\" failed",
- file[i].name.data);
-
- } else if (n != len) {
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
- ngx_write_fd_n " to \"%s\" was incomplete: %z of %uz",
- file[i].name.data, n, len);
- }
+ if (file[i].name.len == 0) {
+ continue;
+ }
- file[i].pos = file[i].buffer;
+ if (file[i].flush) {
+ file[i].flush(&file[i], cycle->log);
}
fd = ngx_open_file(file[i].name.data, NGX_FILE_APPEND,
diff --git a/usr.sbin/nginx/src/core/ngx_file.c b/usr.sbin/nginx/src/core/ngx_file.c
index f32b734e9c5..69d65d0fd2b 100644
--- a/usr.sbin/nginx/src/core/ngx_file.c
+++ b/usr.sbin/nginx/src/core/ngx_file.c
@@ -743,14 +743,14 @@ ngx_copy_file(u_char *from, u_char *to, ngx_copy_file_t *cf)
n = ngx_read_fd(fd, buf, len);
- if (n == NGX_FILE_ERROR) {
+ if (n == -1) {
ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
ngx_read_fd_n " \"%s\" failed", from);
goto failed;
}
if ((size_t) n != len) {
- ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
+ ngx_log_error(NGX_LOG_ALERT, cf->log, 0,
ngx_read_fd_n " has read only %z of %uz from %s",
n, size, from);
goto failed;
@@ -758,14 +758,14 @@ ngx_copy_file(u_char *from, u_char *to, ngx_copy_file_t *cf)
n = ngx_write_fd(nfd, buf, len);
- if (n == NGX_FILE_ERROR) {
+ if (n == -1) {
ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
ngx_write_fd_n " \"%s\" failed", to);
goto failed;
}
if ((size_t) n != len) {
- ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
+ ngx_log_error(NGX_LOG_ALERT, cf->log, 0,
ngx_write_fd_n " has written only %z of %uz to %s",
n, size, to);
goto failed;
diff --git a/usr.sbin/nginx/src/core/ngx_inet.c b/usr.sbin/nginx/src/core/ngx_inet.c
index 3db0136e5d6..a4acc8ca5c4 100644
--- a/usr.sbin/nginx/src/core/ngx_inet.c
+++ b/usr.sbin/nginx/src/core/ngx_inet.c
@@ -465,7 +465,7 @@ ngx_parse_addr(ngx_pool_t *pool, ngx_addr_t *addr, u_char *text, size_t len)
* prevent MSVC8 warning:
* potentially uninitialized local variable 'inaddr6' used
*/
- ngx_memzero(inaddr6.s6_addr, sizeof(struct in6_addr));
+ ngx_memzero(&inaddr6, sizeof(struct in6_addr));
#endif
inaddr = ngx_inet_addr(text, len);
diff --git a/usr.sbin/nginx/src/core/ngx_inet.h b/usr.sbin/nginx/src/core/ngx_inet.h
index c5a3d7677b1..e30dcb51168 100644
--- a/usr.sbin/nginx/src/core/ngx_inet.h
+++ b/usr.sbin/nginx/src/core/ngx_inet.h
@@ -30,7 +30,7 @@
#if (NGX_HAVE_UNIX_DOMAIN)
#define NGX_SOCKADDR_STRLEN (sizeof("unix:") - 1 + NGX_UNIX_ADDRSTRLEN)
#else
-#define NGX_SOCKADDR_STRLEN (NGX_INET6_ADDRSTRLEN + sizeof(":65535") - 1)
+#define NGX_SOCKADDR_STRLEN (NGX_INET6_ADDRSTRLEN + sizeof("[]:65535") - 1)
#endif
#if (NGX_HAVE_UNIX_DOMAIN)
diff --git a/usr.sbin/nginx/src/core/ngx_log.c b/usr.sbin/nginx/src/core/ngx_log.c
index b62687433ea..982c2ed52a7 100644
--- a/usr.sbin/nginx/src/core/ngx_log.c
+++ b/usr.sbin/nginx/src/core/ngx_log.c
@@ -215,7 +215,7 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
#if (NGX_ENABLE_SYSLOG)
if (log->file != NULL && log->file->name.len != 0) {
- (void) ngx_write_fd(log->file->fd, errstr, p - errstr);
+ (void) ngx_write_fd(log->file->fd, errstr, p - errstr);
}
/* Don't send the debug level info to syslog */
@@ -464,7 +464,7 @@ ngx_log_get_priority(ngx_conf_t *cf, ngx_str_t *priority)
ngx_uint_t n, match = 0;
for (n = 0; ngx_syslog_priorities[n].name.len != 0; n++) {
- if (ngx_strncmp(priority->data, ngx_syslog_priorities[n].name.data,
+ if (ngx_strncmp(priority->data, ngx_syslog_priorities[n].name.data,
ngx_syslog_priorities[n].name.len) == 0) {
p = ngx_syslog_priorities[n].macro;
match = 1;
@@ -645,7 +645,7 @@ ngx_set_syslog(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
char *program;
ngx_str_t *value;
- ngx_int_t facility = SYSLOG_FACILITY, match = 0;
+ ngx_int_t facility, match = 0;
ngx_uint_t n;
value = cf->args->elts;
@@ -657,7 +657,7 @@ ngx_set_syslog(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
cf->cycle->new_log.syslog_set = 1;
for (n = 0; ngx_syslog_facilities[n].name.len != 0; n++) {
- if (ngx_strncmp(value[1].data, ngx_syslog_facilities[n].name.data,
+ if (ngx_strncmp(value[1].data, ngx_syslog_facilities[n].name.data,
ngx_syslog_facilities[n].name.len) == 0) {
facility = ngx_syslog_facilities[n].macro;
match = 1;
@@ -675,7 +675,7 @@ ngx_set_syslog(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
return NGX_CONF_ERROR;
}
- program = SYSLOG_IDENT_NAME;
+ program = SYSLOG_IDENT_NAME;
if (cf->args->nelts > 2) {
program = (char *) value[2].data;
}
diff --git a/usr.sbin/nginx/src/core/ngx_radix_tree.c b/usr.sbin/nginx/src/core/ngx_radix_tree.c
index 5b35d1e498d..c1d873749b8 100644
--- a/usr.sbin/nginx/src/core/ngx_radix_tree.c
+++ b/usr.sbin/nginx/src/core/ngx_radix_tree.c
@@ -9,7 +9,7 @@
#include <ngx_core.h>
-static void *ngx_radix_alloc(ngx_radix_tree_t *tree);
+static ngx_radix_node_t *ngx_radix_alloc(ngx_radix_tree_t *tree);
ngx_radix_tree_t *
@@ -263,13 +263,210 @@ ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key)
}
-static void *
+#if (NGX_HAVE_INET6)
+
+ngx_int_t
+ngx_radix128tree_insert(ngx_radix_tree_t *tree, u_char *key, u_char *mask,
+ uintptr_t value)
+{
+ u_char bit;
+ ngx_uint_t i;
+ ngx_radix_node_t *node, *next;
+
+ i = 0;
+ bit = 0x80;
+
+ node = tree->root;
+ next = tree->root;
+
+ while (bit & mask[i]) {
+ if (key[i] & bit) {
+ next = node->right;
+
+ } else {
+ next = node->left;
+ }
+
+ if (next == NULL) {
+ break;
+ }
+
+ bit >>= 1;
+ node = next;
+
+ if (bit == 0) {
+ if (++i == 16) {
+ break;
+ }
+
+ bit = 0x80;
+ }
+ }
+
+ if (next) {
+ if (node->value != NGX_RADIX_NO_VALUE) {
+ return NGX_BUSY;
+ }
+
+ node->value = value;
+ return NGX_OK;
+ }
+
+ while (bit & mask[i]) {
+ next = ngx_radix_alloc(tree);
+ if (next == NULL) {
+ return NGX_ERROR;
+ }
+
+ next->right = NULL;
+ next->left = NULL;
+ next->parent = node;
+ next->value = NGX_RADIX_NO_VALUE;
+
+ if (key[i] & bit) {
+ node->right = next;
+
+ } else {
+ node->left = next;
+ }
+
+ bit >>= 1;
+ node = next;
+
+ if (bit == 0) {
+ if (++i == 16) {
+ break;
+ }
+
+ bit = 0x80;
+ }
+ }
+
+ node->value = value;
+
+ return NGX_OK;
+}
+
+
+ngx_int_t
+ngx_radix128tree_delete(ngx_radix_tree_t *tree, u_char *key, u_char *mask)
+{
+ u_char bit;
+ ngx_uint_t i;
+ ngx_radix_node_t *node;
+
+ i = 0;
+ bit = 0x80;
+ node = tree->root;
+
+ while (node && (bit & mask[i])) {
+ if (key[i] & bit) {
+ node = node->right;
+
+ } else {
+ node = node->left;
+ }
+
+ bit >>= 1;
+
+ if (bit == 0) {
+ if (++i == 16) {
+ break;
+ }
+
+ bit = 0x80;
+ }
+ }
+
+ if (node == NULL) {
+ return NGX_ERROR;
+ }
+
+ if (node->right || node->left) {
+ if (node->value != NGX_RADIX_NO_VALUE) {
+ node->value = NGX_RADIX_NO_VALUE;
+ return NGX_OK;
+ }
+
+ return NGX_ERROR;
+ }
+
+ for ( ;; ) {
+ if (node->parent->right == node) {
+ node->parent->right = NULL;
+
+ } else {
+ node->parent->left = NULL;
+ }
+
+ node->right = tree->free;
+ tree->free = node;
+
+ node = node->parent;
+
+ if (node->right || node->left) {
+ break;
+ }
+
+ if (node->value != NGX_RADIX_NO_VALUE) {
+ break;
+ }
+
+ if (node->parent == NULL) {
+ break;
+ }
+ }
+
+ return NGX_OK;
+}
+
+
+uintptr_t
+ngx_radix128tree_find(ngx_radix_tree_t *tree, u_char *key)
+{
+ u_char bit;
+ uintptr_t value;
+ ngx_uint_t i;
+ ngx_radix_node_t *node;
+
+ i = 0;
+ bit = 0x80;
+ value = NGX_RADIX_NO_VALUE;
+ node = tree->root;
+
+ while (node) {
+ if (node->value != NGX_RADIX_NO_VALUE) {
+ value = node->value;
+ }
+
+ if (key[i] & bit) {
+ node = node->right;
+
+ } else {
+ node = node->left;
+ }
+
+ bit >>= 1;
+
+ if (bit == 0) {
+ i++;
+ bit = 0x80;
+ }
+ }
+
+ return value;
+}
+
+#endif
+
+
+static ngx_radix_node_t *
ngx_radix_alloc(ngx_radix_tree_t *tree)
{
- char *p;
+ ngx_radix_node_t *p;
if (tree->free) {
- p = (char *) tree->free;
+ p = tree->free;
tree->free = tree->free->right;
return p;
}
@@ -283,7 +480,7 @@ ngx_radix_alloc(ngx_radix_tree_t *tree)
tree->size = ngx_pagesize;
}
- p = tree->start;
+ p = (ngx_radix_node_t *) tree->start;
tree->start += sizeof(ngx_radix_node_t);
tree->size -= sizeof(ngx_radix_node_t);
diff --git a/usr.sbin/nginx/src/core/ngx_radix_tree.h b/usr.sbin/nginx/src/core/ngx_radix_tree.h
index 65ee69b2682..4fe06e01474 100644
--- a/usr.sbin/nginx/src/core/ngx_radix_tree.h
+++ b/usr.sbin/nginx/src/core/ngx_radix_tree.h
@@ -36,11 +36,20 @@ typedef struct {
ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool,
ngx_int_t preallocate);
+
ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree,
uint32_t key, uint32_t mask, uintptr_t value);
ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree,
uint32_t key, uint32_t mask);
uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key);
+#if (NGX_HAVE_INET6)
+ngx_int_t ngx_radix128tree_insert(ngx_radix_tree_t *tree,
+ u_char *key, u_char *mask, uintptr_t value);
+ngx_int_t ngx_radix128tree_delete(ngx_radix_tree_t *tree,
+ u_char *key, u_char *mask);
+uintptr_t ngx_radix128tree_find(ngx_radix_tree_t *tree, u_char *key);
+#endif
+
#endif /* _NGX_RADIX_TREE_H_INCLUDED_ */