aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/ngx_rbtree.c85
-rw-r--r--src/core/ngx_rbtree.h6
-rw-r--r--src/core/ngx_slab.c37
-rw-r--r--src/core/ngx_string.c124
-rw-r--r--src/event/ngx_event_timer.c1
-rw-r--r--src/http/ngx_http_parse.c25
6 files changed, 119 insertions, 159 deletions
diff --git a/src/core/ngx_rbtree.c b/src/core/ngx_rbtree.c
index 11db4c5c7..3c42be402 100644
--- a/src/core/ngx_rbtree.c
+++ b/src/core/ngx_rbtree.c
@@ -47,7 +47,48 @@ ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
return;
}
- tree->insert(*root, node, sentinel);
+ /*
+ * The rbtree is currently used by event timers only. Timer values
+ * 1) are spread in small range, usually several minutes,
+ * 2) and overflow each 49 days, if milliseconds are stored in 32 bits.
+ * The below comparison takes into account that overflow.
+ *
+ * If there will be a necessity to use the rbtree for values with
+ * other comparison rules, then a whole "for ( ;; )" loop should
+ * be made as tree->insert() function.
+ */
+
+ temp = *root;
+
+ for ( ;; ) {
+
+ /* node->key < temp->key */
+
+ if ((ngx_rbtree_key_int_t) node->key - (ngx_rbtree_key_int_t) temp->key
+ < 0)
+ {
+ if (temp->left == sentinel) {
+ temp->left = node;
+ break;
+ }
+
+ temp = temp->left;
+ continue;
+ }
+
+ if (temp->right == sentinel) {
+ temp->right = node;
+ break;
+ }
+
+ temp = temp->right;
+ continue;
+ }
+
+ node->parent = temp;
+ node->left = sentinel;
+ node->right = sentinel;
+
/* re-balance tree */
@@ -95,50 +136,10 @@ ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
ngx_rbtree_left_rotate(root, sentinel, node->parent->parent);
}
}
- }
- ngx_rbt_black(*root);
-}
-
-
-void
-ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *temp, ngx_rbtree_node_t *node,
- ngx_rbtree_node_t *sentinel)
-{
- for ( ;; ) {
-
- /*
- * Timer values
- * 1) are spread in small range, usually several minutes,
- * 2) and overflow each 49 days, if milliseconds are stored in 32 bits.
- * The comparison takes into account that overflow.
- */
-
- if ((ngx_rbtree_key_int_t) node->key - (ngx_rbtree_key_int_t) temp->key
- < 0)
- {
- /* node->key < temp->key */
-
- if (temp->left == sentinel) {
- temp->left = node;
- break;
- }
-
- temp = temp->left;
- continue;
- }
-
- if (temp->right == sentinel) {
- temp->right = node;
- break;
- }
-
- temp = temp->right;
}
- node->parent = temp;
- node->left = sentinel;
- node->right = sentinel;
+ ngx_rbt_black(*root);
}
diff --git a/src/core/ngx_rbtree.h b/src/core/ngx_rbtree.h
index 73613028a..a57ec778d 100644
--- a/src/core/ngx_rbtree.h
+++ b/src/core/ngx_rbtree.h
@@ -29,13 +29,13 @@ struct ngx_rbtree_node_s {
typedef struct ngx_rbtree_s ngx_rbtree_t;
-typedef void (*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root,
+typedef ngx_rbtree_node_t *(*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root,
ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
struct ngx_rbtree_s {
ngx_rbtree_node_t *root;
ngx_rbtree_node_t *sentinel;
- ngx_rbtree_insert_pt insert;
+ /* ngx_rbtree_insert_pt insert; */
};
@@ -43,8 +43,6 @@ void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
ngx_rbtree_node_t *node);
void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree,
ngx_rbtree_node_t *node);
-void ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *root,
- ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
static ngx_inline ngx_rbtree_node_t *
diff --git a/src/core/ngx_slab.c b/src/core/ngx_slab.c
index 44d31f538..7b23d3c14 100644
--- a/src/core/ngx_slab.c
+++ b/src/core/ngx_slab.c
@@ -4,41 +4,8 @@
*/
-typedef struct ngx_slab_map_s ngx_slab_map_t;
-struct ngx_http_slab_map_s {
- uintptr_t mask;
- ngx_slab_elt_t *next;
-};
-
-
-typedef struct {
- ngx_slab_elt_t *slabs;
-
- ngx_slab_elt_t *map;
- size_t map_size;
-
- size_t size;
-
-} ngx_slab_t;
-
-
-void *
-ngx_slab_init(ngx_slab_pool_t *pool, size_t size)
+void *ngx_slab_alloc(ngx_slab_pool_t *pool, size_t size)
{
- slab->map_size = (slab->size + ngx_pagesize - 1)
- / (ngx_pagesize / sizeof(ngx_slab_map_t));
-
-
- return NULL;
-}
-
-
-void *
-ngx_slab_alloc(ngx_slab_t *pool, size_t size)
-{
- n = size - 1;
-
-
- return NULL;
+ return NULL;
}
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c
index ad2c9d8c8..886fe00c6 100644
--- a/src/core/ngx_string.c
+++ b/src/core/ngx_string.c
@@ -688,25 +688,24 @@ ngx_decode_base64(ngx_str_t *dst, ngx_str_t *src)
{
size_t len;
u_char *d, *s;
- static u_char basis64[] = {
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 62, 77, 77, 77, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 77, 77, 77, 77, 77, 77,
- 77, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 77, 77, 77, 77, 77,
- 77, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 77, 77, 77, 77, 77,
-
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77
- };
+ static u_char basis64[] =
+ { 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 62, 77, 77, 77, 63,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 77, 77, 77, 77, 77, 77,
+ 77, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 77, 77, 77, 77, 77,
+ 77, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 77, 77, 77, 77, 77,
+
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77 };
for (len = 0; len < src->len; len++) {
if (src->data[len] == '=') {
@@ -888,69 +887,66 @@ ngx_utf_cpystrn(u_char *dst, u_char *src, size_t n)
uintptr_t
ngx_escape_uri(u_char *dst, u_char *src, size_t size, ngx_uint_t type)
{
- ngx_uint_t i, n;
- uint32_t *escape;
- static u_char hex[] = "0123456789abcdef";
+ ngx_uint_t i, n;
+ uint32_t *escape;
+ static u_char hex[] = "0123456789abcdef";
- /* " ", "#", "%", "?", %00-%1F, %7F-%FF */
+ /* " ", "#", "%", "?", %00-%1F, %7F-%FF */
- static uint32_t uri[] = {
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ static uint32_t uri[] =
+ { 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
- 0x80000029, /* 1000 0000 0000 0000 0000 0000 0010 1001 */
+ /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
+ 0x80000029, /* 1000 0000 0000 0000 0000 0000 0010 1001 */
- /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
- 0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */
+ /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
+ 0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */
- /* ~}| {zyx wvut srqp onml kjih gfed cba` */
- 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */
+ /* ~}| {zyx wvut srqp onml kjih gfed cba` */
+ 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- };
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */ };
- /* " ", "#", "%", "+", "?", %00-%1F, %7F-%FF */
+ /* " ", "#", "%", "+", "?", %00-%1F, %7F-%FF */
- static uint32_t args[] = {
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ static uint32_t args[] =
+ { 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
- 0x80000829, /* 1000 0000 0000 0000 0000 1000 0010 1001 */
+ /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
+ 0x80000829, /* 1000 0000 0000 0000 0000 1000 0010 1001 */
- /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
- 0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */
+ /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
+ 0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */
- /* ~}| {zyx wvut srqp onml kjih gfed cba` */
- 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */
+ /* ~}| {zyx wvut srqp onml kjih gfed cba` */
+ 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- };
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */ };
- /* " ", """, "%", "'", %00-%1F, %7F-%FF */
+ /* " ", """, "%", "'", %00-%1F, %7F-%FF */
- static uint32_t html[] = {
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ static uint32_t html[] =
+ { 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
- 0x800000ad, /* 0000 0000 0000 0000 0000 0000 1010 1101 */
+ /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
+ 0x800000ad, /* 0000 0000 0000 0000 0000 0000 1010 1101 */
- /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
- 0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */
+ /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
+ 0x00000000, /* 0000 0000 0000 0000 0000 0000 0000 0000 */
- /* ~}| {zyx wvut srqp onml kjih gfed cba` */
- 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */
+ /* ~}| {zyx wvut srqp onml kjih gfed cba` */
+ 0x80000000, /* 1000 0000 0000 0000 0000 0000 0000 0000 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- };
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */ };
switch (type) {
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
index ababb819a..3eb23f6d3 100644
--- a/src/event/ngx_event_timer.c
+++ b/src/event/ngx_event_timer.c
@@ -23,7 +23,6 @@ ngx_event_timer_init(ngx_log_t *log)
{
ngx_event_timer_rbtree.root = &ngx_event_timer_sentinel;
ngx_event_timer_rbtree.sentinel = &ngx_event_timer_sentinel;
- ngx_event_timer_rbtree.insert = ngx_rbtree_insert_timer_value;
#if (NGX_THREADS)
diff --git a/src/http/ngx_http_parse.c b/src/http/ngx_http_parse.c
index 9f0e1b472..f20a337da 100644
--- a/src/http/ngx_http_parse.c
+++ b/src/http/ngx_http_parse.c
@@ -9,23 +9,22 @@
#include <ngx_http.h>
-static uint32_t usual[] = {
- 0xffffdbfe, /* 1111 1111 1111 1111 1101 1011 1111 1110 */
+static uint32_t usual[] =
+ { 0xffffdbfe, /* 1111 1111 1111 1111 1101 1011 1111 1110 */
- /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
- 0x7fff37d6, /* 0111 1111 1111 1111 0011 0111 1101 0110 */
+ /* ?>=< ;:98 7654 3210 /.-, +*)( '&%$ #"! */
+ 0x7fff37d6, /* 0111 1111 1111 1111 0011 0111 1101 0110 */
- /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
- 0xefffffff, /* 1110 1111 1111 1111 1111 1111 1111 1111 */
+ /* _^]\ [ZYX WVUT SRQP ONML KJIH GFED CBA@ */
+ 0xefffffff, /* 1110 1111 1111 1111 1111 1111 1111 1111 */
- /* ~}| {zyx wvut srqp onml kjih gfed cba` */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ /* ~}| {zyx wvut srqp onml kjih gfed cba` */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
- 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */
-};
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
+ 0xffffffff /* 1111 1111 1111 1111 1111 1111 1111 1111 */ };
/* gcc, icc, msvc and others compile these switches as an jump table */