comparison src/core/ngx_rbtree.h @ 258:6ae1357b7b7c NGINX_0_4_14

nginx 0.4.14 *) Feature: the "proxy_pass_error_message" directive in IMAP/POP3 proxy. *) Feature: now configure detects system PCRE library on FreeBSD, Linux, and NetBSD. *) Bugfix: ngx_http_perl_module did not work with perl built with the threads support; bug appeared in 0.3.38. *) Bugfix: ngx_http_perl_module did not work if perl was called recursively. *) Bugfix: nginx ignored a host name in an request line. *) Bugfix: a worker process may got caught in an endless loop, if a FastCGI server sent too many data to the stderr. *) Bugfix: the $upstream_response_time variable may be negative if the system time was changed backward. *) Bugfix: the "Auth-Login-Attempt" parameter was not sent to IMAP/POP3 proxy authentication server when POP3 was used. *) Bugfix: a segmentation fault might occur if connect to IMAP/POP3 proxy authentication server failed.
author Igor Sysoev <http://sysoev.ru>
date Mon, 27 Nov 2006 00:00:00 +0300
parents 91372f004adf
children 29a6403156b0
comparison
equal deleted inserted replaced
257:0e566ee1bcd5 258:6ae1357b7b7c
21 struct ngx_rbtree_node_s { 21 struct ngx_rbtree_node_s {
22 ngx_rbtree_key_t key; 22 ngx_rbtree_key_t key;
23 ngx_rbtree_node_t *left; 23 ngx_rbtree_node_t *left;
24 ngx_rbtree_node_t *right; 24 ngx_rbtree_node_t *right;
25 ngx_rbtree_node_t *parent; 25 ngx_rbtree_node_t *parent;
26 char color; 26 u_char color;
27 u_char data;
27 }; 28 };
28 29
29 30
30 typedef struct ngx_rbtree_s ngx_rbtree_t; 31 typedef struct ngx_rbtree_s ngx_rbtree_t;
31 32
32 typedef ngx_rbtree_node_t *(*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root, 33 typedef void (*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root,
33 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel); 34 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
34 35
35 struct ngx_rbtree_s { 36 struct ngx_rbtree_s {
36 ngx_rbtree_node_t *root; 37 ngx_rbtree_node_t *root;
37 ngx_rbtree_node_t *sentinel; 38 ngx_rbtree_node_t *sentinel;
38 /* ngx_rbtree_insert_pt insert; */ 39 ngx_rbtree_insert_pt insert;
39 }; 40 };
40 41
41 42
42 void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree, 43 void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
43 ngx_rbtree_node_t *node); 44 ngx_rbtree_node_t *node);
44 void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree, 45 void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree,
45 ngx_rbtree_node_t *node); 46 ngx_rbtree_node_t *node);
47 void ngx_rbtree_insert_value(ngx_rbtree_node_t *root, ngx_rbtree_node_t *node,
48 ngx_rbtree_node_t *sentinel);
49 void ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *root,
50 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
46 51
47 52
48 static ngx_inline ngx_rbtree_node_t * 53 static ngx_inline ngx_rbtree_node_t *
49 ngx_rbtree_min(ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel) 54 ngx_rbtree_min(ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel)
50 { 55 {