Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–9 unchanged (9 lines)
10
11
12#define NGX_SSL_CACHE_PATH 0
13#define NGX_SSL_CACHE_DATA 1
14#define NGX_SSL_CACHE_ENGINE 2
15
16
17#define ngx_ssl_cache_get_conf(cycle) \
18 (ngx_ssl_cache_t *) ngx_get_conf(cycle->conf_ctx, ngx_openssl_cache_module)
19
20#define ngx_ssl_cache_get_old_conf(cycle) \
21 cycle->old_cycle->conf_ctx ? ngx_ssl_cache_get_conf(cycle->old_cycle) \
22 : NULL
…lines 23–55 unchanged (33 lines)
56typedef struct {
57 ngx_rbtree_t rbtree;
58 ngx_rbtree_node_t sentinel;
59
60 ngx_flag_t inheritable;
61} ngx_ssl_cache_t;
62
63
64static ngx_int_t ngx_ssl_cache_init_key(ngx_pool_t *pool, ngx_uint_t index,
65 ngx_str_t *path, ngx_ssl_cache_key_t *id);
66static ngx_ssl_cache_node_t *ngx_ssl_cache_lookup(ngx_ssl_cache_t *cache,
67 ngx_ssl_cache_type_t *type, ngx_ssl_cache_key_t *id, uint32_t hash);
68
…lines 69–224 unchanged (156 lines)
225 break;
226 }
227 }
228 }
229
230 if (value == NULL) {
231 value = type->create(&id, err, data);
232 if (value == NULL) {
233 return NULL;
234 }
235 }
236
237 cn = ngx_palloc(cf->pool, sizeof(ngx_ssl_cache_node_t) + id.len + 1);
238 if (cn == NULL) {
239 type->free(value);
…lines 240–265 unchanged (26 lines)
266 *err = NULL;
267
268 if (ngx_ssl_cache_init_key(pool, index, path, &id) != NGX_OK) {
269 return NULL;
270 }
271
272 return ngx_ssl_cache_types[index].create(&id, err, data);
273}
274
275
276static ngx_int_t
277ngx_ssl_cache_init_key(ngx_pool_t *pool, ngx_uint_t index, ngx_str_t *path,
278 ngx_ssl_cache_key_t *id)
…lines 279–468 unchanged (190 lines)
469}
470
471
472static void *
473ngx_ssl_cache_pkey_create(ngx_ssl_cache_key_t *id, char **err, void *data)
474{
475 ngx_array_t *passwords = data;
476
477 BIO *bio;
478 EVP_PKEY *pkey;
479 ngx_str_t *pwd;
480 ngx_uint_t tries;
481 pem_password_cb *cb;
482
483 if (id->type == NGX_SSL_CACHE_ENGINE) {
484
485#ifndef OPENSSL_NO_ENGINE
486
487 u_char *p, *last;
…lines 488–526 unchanged (39 lines)
527 }
528
529 bio = ngx_ssl_cache_create_bio(id, err);
530 if (bio == NULL) {
531 return NULL;
532 }
533
534 if (passwords) {
535 tries = passwords->nelts;
536 pwd = passwords->elts;
537 cb = ngx_ssl_cache_pkey_password_callback;
538
539 } else {
540 tries = 1;
541 pwd = NULL;
542 cb = NULL;
543 }
544
545 for ( ;; ) {
546
547 pkey = PEM_read_bio_PrivateKey(bio, NULL, cb, pwd);
548 if (pkey != NULL) {
549 break;
550 }
551
552 if (tries-- > 1) {
553 ERR_clear_error();
554 (void) BIO_reset(bio);
555 pwd++;
556 continue;
557 }
558
559 *err = "PEM_read_bio_PrivateKey() failed";
560 BIO_free(bio);
561 return NULL;
562 }
563
564 BIO_free(bio);
565
566 return pkey;
567}
568
569
570static int
571ngx_ssl_cache_pkey_password_callback(char *buf, int size, int rwflag,
572 void *userdata)
573{
574 ngx_str_t *pwd = userdata;
575
576 if (rwflag) {
577 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0,
578 "ngx_ssl_cache_pkey_password_callback() is called "
579 "for encryption");
580 return 0;
581 }
582
583 if (pwd == NULL) {
584 return 0;
585 }
586
587 if (pwd->len > (size_t) size) {
588 ngx_log_error(NGX_LOG_ERR, ngx_cycle->log, 0,
…lines 589–902 unchanged (314 lines)

After

…lines 1–9 unchanged (9 lines)
10
11
12#define NGX_SSL_CACHE_PATH 0
13#define NGX_SSL_CACHE_DATA 1
14#define NGX_SSL_CACHE_ENGINE 2
15
16#define NGX_SSL_CACHE_DISABLED (ngx_array_t *) (uintptr_t) -1
17
18
19#define ngx_ssl_cache_get_conf(cycle) \
20 (ngx_ssl_cache_t *) ngx_get_conf(cycle->conf_ctx, ngx_openssl_cache_module)
21
22#define ngx_ssl_cache_get_old_conf(cycle) \
…lines 23–59 unchanged (37 lines)
60 ngx_rbtree_node_t sentinel;
61
62 ngx_flag_t inheritable;
63} ngx_ssl_cache_t;
64
65
66typedef struct {
67 ngx_str_t *pwd;
68 unsigned encrypted:1;
69} ngx_ssl_cache_pwd_t;
70
71
72static ngx_int_t ngx_ssl_cache_init_key(ngx_pool_t *pool, ngx_uint_t index,
73 ngx_str_t *path, ngx_ssl_cache_key_t *id);
74static ngx_ssl_cache_node_t *ngx_ssl_cache_lookup(ngx_ssl_cache_t *cache,
75 ngx_ssl_cache_type_t *type, ngx_ssl_cache_key_t *id, uint32_t hash);
…lines 76–232 unchanged (157 lines)
233 break;
234 }
235 }
236 }
237
238 if (value == NULL) {
239 value = type->create(&id, err, &data);
240
241 if (value == NULL || data == NGX_SSL_CACHE_DISABLED) {
242 return value;
243 }
244 }
245
246 cn = ngx_palloc(cf->pool, sizeof(ngx_ssl_cache_node_t) + id.len + 1);
247 if (cn == NULL) {
248 type->free(value);
…lines 249–274 unchanged (26 lines)
275 *err = NULL;
276
277 if (ngx_ssl_cache_init_key(pool, index, path, &id) != NGX_OK) {
278 return NULL;
279 }
280
281 return ngx_ssl_cache_types[index].create(&id, err, &data);
282}
283
284
285static ngx_int_t
286ngx_ssl_cache_init_key(ngx_pool_t *pool, ngx_uint_t index, ngx_str_t *path,
287 ngx_ssl_cache_key_t *id)
…lines 288–477 unchanged (190 lines)
478}
479
480
481static void *
482ngx_ssl_cache_pkey_create(ngx_ssl_cache_key_t *id, char **err, void *data)
483{
484 ngx_array_t **passwords = data;
485
486 BIO *bio;
487 EVP_PKEY *pkey;
488 ngx_uint_t tries;
489 pem_password_cb *cb;
490 ngx_ssl_cache_pwd_t cb_data, *pwd;
491
492 if (id->type == NGX_SSL_CACHE_ENGINE) {
493
494#ifndef OPENSSL_NO_ENGINE
495
496 u_char *p, *last;
…lines 497–536 unchanged (40 lines)
537
538 bio = ngx_ssl_cache_create_bio(id, err);
539 if (bio == NULL) {
540 return NULL;
541 }
542
543 cb_data.encrypted = 0;
544
545 if (*passwords) {
546 cb_data.pwd = (*passwords)->elts;
547 tries = (*passwords)->nelts;
548 pwd = &cb_data;
549 cb = ngx_ssl_cache_pkey_password_callback;
550
551 } else {
552 cb_data.pwd = NULL;
553 tries = 1;
554 pwd = NULL;
555 cb = NULL;
556 }
557
558 for ( ;; ) {
559
560 pkey = PEM_read_bio_PrivateKey(bio, NULL, cb, pwd);
561 if (pkey != NULL) {
562 break;
563 }
564
565 if (tries-- > 1) {
566 ERR_clear_error();
567 (void) BIO_reset(bio);
568 cb_data.pwd++;
569 continue;
570 }
571
572 *err = "PEM_read_bio_PrivateKey() failed";
573 BIO_free(bio);
574 return NULL;
575 }
576
577 if (cb_data.encrypted) {
578 *passwords = NGX_SSL_CACHE_DISABLED;
579 }
580
581 BIO_free(bio);
582
583 return pkey;
584}
585
586
587static int
588ngx_ssl_cache_pkey_password_callback(char *buf, int size, int rwflag,
589 void *userdata)
590{
591 ngx_ssl_cache_pwd_t *data = userdata;
592
593 ngx_str_t *pwd;
594
595 if (rwflag) {
596 ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0,
597 "ngx_ssl_cache_pkey_password_callback() is called "
598 "for encryption");
599 return 0;
600 }
601
602 data->encrypted = 1;
603
604 pwd = data->pwd;
605
606 if (pwd == NULL) {
607 return 0;
608 }
609
610 if (pwd->len > (size_t) size) {
…lines 611–925 unchanged (315 lines)

Before

translation_unit
comment "/*\n * Copyright (C) Nginx, Inc.\n */"
preproc_include
#include "#include"
system_lib_string "<ngx_config.h>"
preproc_include
#include "#include"
system_lib_string "<ngx_core.h>"
preproc_include
#include "#include"
system_lib_string "<ngx_event.h>"
preproc_def
#define "#define"
identifier "NGX_SSL_CACHE_PATH"
preproc_arg "0"
preproc_def
#define "#define"
identifier "NGX_SSL_CACHE_DATA"
preproc_arg "1"
preproc_def
#define "#define"
identifier "NGX_SSL_CACHE_ENGINE"
preproc_arg "2"
preproc_function_def
#define "#define"
identifier "ngx_ssl_cache_get_conf"
preproc_params
( "("
identifier "cycle"
) ")"
preproc_arg "(ngx_ssl_cache_t *) ngx_get_conf(cycle->conf_ctx, ngx_openss"...
preproc_function_def
#define "#define"
identifier "ngx_ssl_cache_get_old_conf"
preproc_params
( "("
identifier "cycle"
) ")"
preproc_arg "cycle->old_cycle->conf_ctx ? ngx_ssl_cache_get_conf(cycle->o"...
type_definition (+31 nodes collapsed)
type_definition (+35 nodes collapsed)
type_definition
typedef "typedef"
primitive_type "void"
function_declarator
parenthesized_declarator
( "("
pointer_declarator
* "*"
type_identifier "ngx_ssl_cache_free_pt"
) ")"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
type_definition (+29 nodes collapsed)
type_definition (+21 nodes collapsed)
type_definition (+37 nodes collapsed)
type_definition (+21 nodes collapsed)
declaration (+31 nodes collapsed)
declaration (+33 nodes collapsed)
declaration (+31 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ngx_ssl_cache_cert_free"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
declaration (+25 nodes collapsed)
declaration (+31 nodes collapsed)
declaration (+29 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ngx_ssl_cache_pkey_free"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
declaration (+25 nodes collapsed)
declaration (+31 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ngx_ssl_cache_crl_free"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
declaration (+25 nodes collapsed)
declaration (+31 nodes collapsed)
declaration (+25 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
pointer_declarator
* "*"
function_declarator
identifier "ngx_openssl_cache_create_conf"
parameter_list
( "("
parameter_declaration
type_identifier "ngx_cycle_t"
pointer_declarator
* "*"
identifier "cycle"
) ")"
; ";"
declaration (+23 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ngx_ssl_cache_cleanup"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
declaration (+27 nodes collapsed)
declaration (+52 nodes collapsed)
declaration (+24 nodes collapsed)
declaration (+51 nodes collapsed)
declaration (+53 nodes collapsed)
function_definition
primitive_type "void"
pointer_declarator (+36 nodes collapsed)
compound_statement
{ "{"
declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "value"
; ";"
declaration
type_identifier "time_t"
identifier "mtime"
; ";"
declaration
primitive_type "uint32_t"
identifier "hash"
; ";"
declaration
type_identifier "ngx_int_t"
identifier "rc"
; ";"
declaration
type_identifier "ngx_file_uniq_t"
identifier "uniq"
; ";"
declaration
type_identifier "ngx_file_info_t"
identifier "fi"
; ";"
declaration
type_identifier "ngx_ssl_cache_t"
pointer_declarator
* "*"
identifier "cache"
, ","
pointer_declarator
* "*"
identifier "old_cache"
; ";"
declaration
type_identifier "ngx_ssl_cache_key_t"
identifier "id"
; ";"
declaration
type_identifier "ngx_ssl_cache_type_t"
pointer_declarator
* "*"
identifier "type"
; ";"
declaration
type_identifier "ngx_ssl_cache_node_t"
pointer_declarator
* "*"
identifier "cn"
; ";"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "err"
= "="
null
NULL "NULL"
; ";"
if_statement (+33 nodes collapsed)
expression_statement (+26 nodes collapsed)
expression_statement
assignment_expression
identifier "type"
= "="
pointer_expression
& "&"
subscript_expression
identifier "ngx_ssl_cache_types"
[ "["
identifier "index"
] "]"
; ";"
expression_statement
assignment_expression
identifier "hash"
= "="
call_expression
identifier "ngx_murmur_hash2"
argument_list
( "("
field_expression
identifier "id"
. "."
field_identifier "data"
, ","
field_expression
identifier "id"
. "."
field_identifier "len"
) ")"
; ";"
expression_statement
assignment_expression
identifier "cn"
= "="
call_expression
identifier "ngx_ssl_cache_lookup"
argument_list
( "("
identifier "cache"
, ","
identifier "type"
, ","
pointer_expression
& "&"
identifier "id"
, ","
identifier "hash"
) ")"
; ";"
if_statement (+30 nodes collapsed)
expression_statement
assignment_expression
identifier "value"
= "="
null
NULL "NULL"
; ";"
if_statement (+88 nodes collapsed)
comment "/* try to use a reference from the old cycle */"
expression_statement
assignment_expression
identifier "old_cache"
= "="
call_expression
identifier "ngx_ssl_cache_get_old_conf"
argument_list
( "("
field_expression
identifier "cf"
-> "->"
field_identifier "cycle"
) ")"
; ";"
if_statement (+140 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "value"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
identifier "value"
= "="
call_expression
field_expression
identifier "type"
-> "->"
field_identifier "create"
argument_list
( "("
pointer_expression
& "&"
identifier "id"
, ","
identifier "err"
, ","
identifier "data"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "value"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
return_statement
return "return"
null
NULL "NULL"
; ";"
} "}"
} "}"
expression_statement (+30 nodes collapsed)
if_statement (+29 nodes collapsed)
expression_statement
assignment_expression
field_expression
field_expression
identifier "cn"
-> "->"
field_identifier "node"
. "."
field_identifier "key"
= "="
identifier "hash"
; ";"
expression_statement (+25 nodes collapsed)
expression_statement
assignment_expression
field_expression
field_expression
identifier "cn"
-> "->"
field_identifier "id"
. "."
field_identifier "len"
= "="
field_expression
identifier "id"
. "."
field_identifier "len"
; ";"
expression_statement
assignment_expression
field_expression
field_expression
identifier "cn"
-> "->"
field_identifier "id"
. "."
field_identifier "type"
= "="
field_expression
identifier "id"
. "."
field_identifier "type"
; ";"
expression_statement
assignment_expression
field_expression
identifier "cn"
-> "->"
field_identifier "type"
= "="
identifier "type"
; ";"
expression_statement
assignment_expression
field_expression
identifier "cn"
-> "->"
field_identifier "value"
= "="
identifier "value"
; ";"
expression_statement
assignment_expression
field_expression
identifier "cn"
-> "->"
field_identifier "mtime"
= "="
identifier "mtime"
; ";"
expression_statement
assignment_expression
field_expression
identifier "cn"
-> "->"
field_identifier "uniq"
= "="
identifier "uniq"
; ";"
expression_statement (+27 nodes collapsed)
expression_statement
call_expression
identifier "ngx_rbtree_insert"
argument_list
( "("
pointer_expression
& "&"
field_expression
identifier "cache"
-> "->"
field_identifier "rbtree"
, ","
pointer_expression
& "&"
field_expression
identifier "cn"
-> "->"
field_identifier "node"
) ")"
; ";"
return_statement
return "return"
call_expression
field_expression
identifier "type"
-> "->"
field_identifier "ref"
argument_list
( "("
identifier "err"
, ","
field_expression
identifier "cn"
-> "->"
field_identifier "value"
) ")"
; ";"
} "}"
function_definition
primitive_type "void"
pointer_declarator (+36 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "ngx_ssl_cache_key_t"
identifier "id"
; ";"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "err"
= "="
null
NULL "NULL"
; ";"
if_statement (+30 nodes collapsed)
return_statement
return "return"
call_expression
field_expression
subscript_expression
identifier "ngx_ssl_cache_types"
[ "["
identifier "index"
] "]"
. "."
field_identifier "create"
argument_list
( "("
pointer_expression
& "&"
identifier "id"
, ","
identifier "err"
, ","
identifier "data"
) ")"
; ";"
} "}"
function_definition (+220 nodes collapsed)
function_definition (+293 nodes collapsed)
function_definition (+469 nodes collapsed)
function_definition (+27 nodes collapsed)
function_definition (+176 nodes collapsed)
function_definition
storage_class_specifier
static "static"
primitive_type "void"
pointer_declarator (+26 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "ngx_array_t"
init_declarator
pointer_declarator
* "*"
identifier "passwords"
= "="
identifier "data"
; ";"
declaration
type_identifier "BIO"
pointer_declarator
* "*"
identifier "bio"
; ";"
declaration
type_identifier "EVP_PKEY"
pointer_declarator
* "*"
identifier "pkey"
; ";"
declaration
type_identifier "ngx_str_t"
pointer_declarator
* "*"
identifier "pwd"
; ";"
declaration
type_identifier "ngx_uint_t"
identifier "tries"
; ";"
declaration
type_identifier "pem_password_cb"
pointer_declarator
* "*"
identifier "cb"
; ";"
if_statement (+276 nodes collapsed)
expression_statement
assignment_expression
identifier "bio"
= "="
call_expression
identifier "ngx_ssl_cache_create_bio"
argument_list
( "("
identifier "id"
, ","
identifier "err"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "bio"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
return_statement
return "return"
null
NULL "NULL"
; ";"
} "}"
if_statement
if "if"
parenthesized_expression
( "("
identifier "passwords"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
identifier "tries"
= "="
field_expression
identifier "passwords"
-> "->"
field_identifier "nelts"
; ";"
expression_statement
assignment_expression
identifier "pwd"
= "="
field_expression
identifier "passwords"
-> "->"
field_identifier "elts"
; ";"
expression_statement
assignment_expression
identifier "cb"
= "="
identifier "ngx_ssl_cache_pkey_password_callback"
; ";"
} "}"
else_clause
else "else"
compound_statement
{ "{"
expression_statement
assignment_expression
identifier "tries"
= "="
number_literal "1"
; ";"
expression_statement
assignment_expression
identifier "pwd"
= "="
null
NULL "NULL"
; ";"
expression_statement
assignment_expression
identifier "cb"
= "="
null
NULL "NULL"
; ";"
} "}"
for_statement
for "for"
( "("
; ";"
; ";"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
identifier "pkey"
= "="
call_expression
identifier "PEM_read_bio_PrivateKey"
argument_list
( "("
identifier "bio"
, ","
null
NULL "NULL"
, ","
identifier "cb"
, ","
identifier "pwd"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "pkey"
!= "!="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
break_statement
break "break"
; ";"
} "}"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
update_expression
identifier "tries"
-- "--"
> ">"
number_literal "1"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_clear_error"
argument_list
( "("
) ")"
; ";"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "BIO_reset"
argument_list
( "("
identifier "bio"
) ")"
; ";"
expression_statement
update_expression
identifier "pwd"
++ "++"
; ";"
continue_statement
continue "continue"
; ";"
} "}"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "err"
= "="
string_literal
" "\""
string_content "PEM_read_bio_PrivateKey() failed"
" "\""
; ";"
expression_statement
call_expression
identifier "BIO_free"
argument_list
( "("
identifier "bio"
) ")"
; ";"
return_statement
return "return"
null
NULL "NULL"
; ";"
} "}"
expression_statement
call_expression
identifier "BIO_free"
argument_list
( "("
identifier "bio"
) ")"
; ";"
return_statement
return "return"
identifier "pkey"
; ";"
} "}"
function_definition
storage_class_specifier
static "static"
primitive_type "int"
function_declarator (+24 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "ngx_str_t"
init_declarator
pointer_declarator
* "*"
identifier "pwd"
= "="
identifier "userdata"
; ";"
if_statement (+38 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "pwd"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
return_statement
return "return"
number_literal "0"
; ";"
} "}"
if_statement (+56 nodes collapsed)
expression_statement
call_expression
identifier "ngx_memcpy"
argument_list
( "("
identifier "buf"
, ","
field_expression
identifier "pwd"
-> "->"
field_identifier "data"
, ","
identifier "size"
) ")"
; ";"
return_statement
return "return"
identifier "size"
; ";"
} "}"
function_definition (+25 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+350 nodes collapsed)
function_definition (+27 nodes collapsed)
function_definition (+176 nodes collapsed)
function_definition (+350 nodes collapsed)
function_definition (+180 nodes collapsed)
function_definition (+157 nodes collapsed)
function_definition (+51 nodes collapsed)
function_definition (+146 nodes collapsed)
function_definition (+325 nodes collapsed)

After

translation_unit
comment "/*\n * Copyright (C) Nginx, Inc.\n */"
preproc_include
#include "#include"
system_lib_string "<ngx_config.h>"
preproc_include
#include "#include"
system_lib_string "<ngx_core.h>"
preproc_include
#include "#include"
system_lib_string "<ngx_event.h>"
preproc_def
#define "#define"
identifier "NGX_SSL_CACHE_PATH"
preproc_arg "0"
preproc_def
#define "#define"
identifier "NGX_SSL_CACHE_DATA"
preproc_arg "1"
preproc_def
#define "#define"
identifier "NGX_SSL_CACHE_ENGINE"
preproc_arg "2"
preproc_def
#define "#define"
identifier "NGX_SSL_CACHE_DISABLED"
preproc_arg "(ngx_array_t *) (uintptr_t) -1"
preproc_function_def
#define "#define"
identifier "ngx_ssl_cache_get_conf"
preproc_params
( "("
identifier "cycle"
) ")"
preproc_arg "(ngx_ssl_cache_t *) ngx_get_conf(cycle->conf_ctx, ngx_openss"...
preproc_function_def
#define "#define"
identifier "ngx_ssl_cache_get_old_conf"
preproc_params
( "("
identifier "cycle"
) ")"
preproc_arg "cycle->old_cycle->conf_ctx ? ngx_ssl_cache_get_conf(cycle->o"...
type_definition (+31 nodes collapsed)
type_definition (+35 nodes collapsed)
type_definition
typedef "typedef"
primitive_type "void"
function_declarator
parenthesized_declarator
( "("
pointer_declarator
* "*"
type_identifier "ngx_ssl_cache_free_pt"
) ")"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
type_definition (+29 nodes collapsed)
type_definition (+21 nodes collapsed)
type_definition (+37 nodes collapsed)
type_definition (+21 nodes collapsed)
type_definition
typedef "typedef"
struct_specifier
struct "struct"
field_declaration_list
{ "{"
field_declaration
type_identifier "ngx_str_t"
pointer_declarator
* "*"
field_identifier "pwd"
; ";"
field_declaration
sized_type_specifier
unsigned "unsigned"
field_identifier "encrypted"
bitfield_clause
: ":"
number_literal "1"
; ";"
} "}"
type_identifier "ngx_ssl_cache_pwd_t"
; ";"
declaration (+31 nodes collapsed)
declaration (+33 nodes collapsed)
declaration (+31 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ngx_ssl_cache_cert_free"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
declaration (+25 nodes collapsed)
declaration (+31 nodes collapsed)
declaration (+29 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ngx_ssl_cache_pkey_free"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
declaration (+25 nodes collapsed)
declaration (+31 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ngx_ssl_cache_crl_free"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
declaration (+25 nodes collapsed)
declaration (+31 nodes collapsed)
declaration (+25 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
pointer_declarator
* "*"
function_declarator
identifier "ngx_openssl_cache_create_conf"
parameter_list
( "("
parameter_declaration
type_identifier "ngx_cycle_t"
pointer_declarator
* "*"
identifier "cycle"
) ")"
; ";"
declaration (+23 nodes collapsed)
declaration
storage_class_specifier
static "static"
primitive_type "void"
function_declarator
identifier "ngx_ssl_cache_cleanup"
parameter_list
( "("
parameter_declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "data"
) ")"
; ";"
declaration (+27 nodes collapsed)
declaration (+52 nodes collapsed)
declaration (+24 nodes collapsed)
declaration (+51 nodes collapsed)
declaration (+53 nodes collapsed)
function_definition
primitive_type "void"
pointer_declarator (+36 nodes collapsed)
compound_statement
{ "{"
declaration
primitive_type "void"
pointer_declarator
* "*"
identifier "value"
; ";"
declaration
type_identifier "time_t"
identifier "mtime"
; ";"
declaration
primitive_type "uint32_t"
identifier "hash"
; ";"
declaration
type_identifier "ngx_int_t"
identifier "rc"
; ";"
declaration
type_identifier "ngx_file_uniq_t"
identifier "uniq"
; ";"
declaration
type_identifier "ngx_file_info_t"
identifier "fi"
; ";"
declaration
type_identifier "ngx_ssl_cache_t"
pointer_declarator
* "*"
identifier "cache"
, ","
pointer_declarator
* "*"
identifier "old_cache"
; ";"
declaration
type_identifier "ngx_ssl_cache_key_t"
identifier "id"
; ";"
declaration
type_identifier "ngx_ssl_cache_type_t"
pointer_declarator
* "*"
identifier "type"
; ";"
declaration
type_identifier "ngx_ssl_cache_node_t"
pointer_declarator
* "*"
identifier "cn"
; ";"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "err"
= "="
null
NULL "NULL"
; ";"
if_statement (+33 nodes collapsed)
expression_statement (+26 nodes collapsed)
expression_statement
assignment_expression
identifier "type"
= "="
pointer_expression
& "&"
subscript_expression
identifier "ngx_ssl_cache_types"
[ "["
identifier "index"
] "]"
; ";"
expression_statement
assignment_expression
identifier "hash"
= "="
call_expression
identifier "ngx_murmur_hash2"
argument_list
( "("
field_expression
identifier "id"
. "."
field_identifier "data"
, ","
field_expression
identifier "id"
. "."
field_identifier "len"
) ")"
; ";"
expression_statement
assignment_expression
identifier "cn"
= "="
call_expression
identifier "ngx_ssl_cache_lookup"
argument_list
( "("
identifier "cache"
, ","
identifier "type"
, ","
pointer_expression
& "&"
identifier "id"
, ","
identifier "hash"
) ")"
; ";"
if_statement (+30 nodes collapsed)
expression_statement
assignment_expression
identifier "value"
= "="
null
NULL "NULL"
; ";"
if_statement (+88 nodes collapsed)
comment "/* try to use a reference from the old cycle */"
expression_statement
assignment_expression
identifier "old_cache"
= "="
call_expression
identifier "ngx_ssl_cache_get_old_conf"
argument_list
( "("
field_expression
identifier "cf"
-> "->"
field_identifier "cycle"
) ")"
; ";"
if_statement (+140 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "value"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
identifier "value"
= "="
call_expression
field_expression
identifier "type"
-> "->"
field_identifier "create"
argument_list
( "("
pointer_expression
& "&"
identifier "id"
, ","
identifier "err"
, ","
pointer_expression
& "&"
identifier "data"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
binary_expression
identifier "value"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
identifier "data"
== "=="
identifier "NGX_SSL_CACHE_DISABLED"
) ")"
compound_statement
{ "{"
return_statement
return "return"
identifier "value"
; ";"
} "}"
} "}"
expression_statement (+30 nodes collapsed)
if_statement (+29 nodes collapsed)
expression_statement
assignment_expression
field_expression
field_expression
identifier "cn"
-> "->"
field_identifier "node"
. "."
field_identifier "key"
= "="
identifier "hash"
; ";"
expression_statement (+25 nodes collapsed)
expression_statement
assignment_expression
field_expression
field_expression
identifier "cn"
-> "->"
field_identifier "id"
. "."
field_identifier "len"
= "="
field_expression
identifier "id"
. "."
field_identifier "len"
; ";"
expression_statement
assignment_expression
field_expression
field_expression
identifier "cn"
-> "->"
field_identifier "id"
. "."
field_identifier "type"
= "="
field_expression
identifier "id"
. "."
field_identifier "type"
; ";"
expression_statement
assignment_expression
field_expression
identifier "cn"
-> "->"
field_identifier "type"
= "="
identifier "type"
; ";"
expression_statement
assignment_expression
field_expression
identifier "cn"
-> "->"
field_identifier "value"
= "="
identifier "value"
; ";"
expression_statement
assignment_expression
field_expression
identifier "cn"
-> "->"
field_identifier "mtime"
= "="
identifier "mtime"
; ";"
expression_statement
assignment_expression
field_expression
identifier "cn"
-> "->"
field_identifier "uniq"
= "="
identifier "uniq"
; ";"
expression_statement (+27 nodes collapsed)
expression_statement
call_expression
identifier "ngx_rbtree_insert"
argument_list
( "("
pointer_expression
& "&"
field_expression
identifier "cache"
-> "->"
field_identifier "rbtree"
, ","
pointer_expression
& "&"
field_expression
identifier "cn"
-> "->"
field_identifier "node"
) ")"
; ";"
return_statement
return "return"
call_expression
field_expression
identifier "type"
-> "->"
field_identifier "ref"
argument_list
( "("
identifier "err"
, ","
field_expression
identifier "cn"
-> "->"
field_identifier "value"
) ")"
; ";"
} "}"
function_definition
primitive_type "void"
pointer_declarator (+36 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "ngx_ssl_cache_key_t"
identifier "id"
; ";"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "err"
= "="
null
NULL "NULL"
; ";"
if_statement (+30 nodes collapsed)
return_statement
return "return"
call_expression
field_expression
subscript_expression
identifier "ngx_ssl_cache_types"
[ "["
identifier "index"
] "]"
. "."
field_identifier "create"
argument_list
( "("
pointer_expression
& "&"
identifier "id"
, ","
identifier "err"
, ","
pointer_expression
& "&"
identifier "data"
) ")"
; ";"
} "}"
function_definition (+220 nodes collapsed)
function_definition (+293 nodes collapsed)
function_definition (+469 nodes collapsed)
function_definition (+27 nodes collapsed)
function_definition (+176 nodes collapsed)
function_definition
storage_class_specifier
static "static"
primitive_type "void"
pointer_declarator (+26 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "ngx_array_t"
init_declarator
pointer_declarator
* "*"
pointer_declarator
* "*"
identifier "passwords"
= "="
identifier "data"
; ";"
declaration
type_identifier "BIO"
pointer_declarator
* "*"
identifier "bio"
; ";"
declaration
type_identifier "EVP_PKEY"
pointer_declarator
* "*"
identifier "pkey"
; ";"
declaration
type_identifier "ngx_uint_t"
identifier "tries"
; ";"
declaration
type_identifier "pem_password_cb"
pointer_declarator
* "*"
identifier "cb"
; ";"
declaration
type_identifier "ngx_ssl_cache_pwd_t"
identifier "cb_data"
, ","
pointer_declarator
* "*"
identifier "pwd"
; ";"
if_statement (+276 nodes collapsed)
expression_statement
assignment_expression
identifier "bio"
= "="
call_expression
identifier "ngx_ssl_cache_create_bio"
argument_list
( "("
identifier "id"
, ","
identifier "err"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "bio"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
return_statement
return "return"
null
NULL "NULL"
; ";"
} "}"
expression_statement
assignment_expression
field_expression
identifier "cb_data"
. "."
field_identifier "encrypted"
= "="
number_literal "0"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
pointer_expression
* "*"
identifier "passwords"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
field_expression
identifier "cb_data"
. "."
field_identifier "pwd"
= "="
field_expression
parenthesized_expression
( "("
pointer_expression
* "*"
identifier "passwords"
) ")"
-> "->"
field_identifier "elts"
; ";"
expression_statement
assignment_expression
identifier "tries"
= "="
field_expression
parenthesized_expression
( "("
pointer_expression
* "*"
identifier "passwords"
) ")"
-> "->"
field_identifier "nelts"
; ";"
expression_statement
assignment_expression
identifier "pwd"
= "="
pointer_expression
& "&"
identifier "cb_data"
; ";"
expression_statement
assignment_expression
identifier "cb"
= "="
identifier "ngx_ssl_cache_pkey_password_callback"
; ";"
} "}"
else_clause
else "else"
compound_statement
{ "{"
expression_statement
assignment_expression
field_expression
identifier "cb_data"
. "."
field_identifier "pwd"
= "="
null
NULL "NULL"
; ";"
expression_statement
assignment_expression
identifier "tries"
= "="
number_literal "1"
; ";"
expression_statement
assignment_expression
identifier "pwd"
= "="
null
NULL "NULL"
; ";"
expression_statement
assignment_expression
identifier "cb"
= "="
null
NULL "NULL"
; ";"
} "}"
for_statement
for "for"
( "("
; ";"
; ";"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
identifier "pkey"
= "="
call_expression
identifier "PEM_read_bio_PrivateKey"
argument_list
( "("
identifier "bio"
, ","
null
NULL "NULL"
, ","
identifier "cb"
, ","
identifier "pwd"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "pkey"
!= "!="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
break_statement
break "break"
; ";"
} "}"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
update_expression
identifier "tries"
-- "--"
> ">"
number_literal "1"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_clear_error"
argument_list
( "("
) ")"
; ";"
expression_statement
cast_expression
( "("
type_descriptor
primitive_type "void"
) ")"
call_expression
identifier "BIO_reset"
argument_list
( "("
identifier "bio"
) ")"
; ";"
expression_statement
update_expression
field_expression
identifier "cb_data"
. "."
field_identifier "pwd"
++ "++"
; ";"
continue_statement
continue "continue"
; ";"
} "}"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "err"
= "="
string_literal
" "\""
string_content "PEM_read_bio_PrivateKey() failed"
" "\""
; ";"
expression_statement
call_expression
identifier "BIO_free"
argument_list
( "("
identifier "bio"
) ")"
; ";"
return_statement
return "return"
null
NULL "NULL"
; ";"
} "}"
if_statement
if "if"
parenthesized_expression
( "("
field_expression
identifier "cb_data"
. "."
field_identifier "encrypted"
) ")"
compound_statement
{ "{"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "passwords"
= "="
identifier "NGX_SSL_CACHE_DISABLED"
; ";"
} "}"
expression_statement
call_expression
identifier "BIO_free"
argument_list
( "("
identifier "bio"
) ")"
; ";"
return_statement
return "return"
identifier "pkey"
; ";"
} "}"
function_definition
storage_class_specifier
static "static"
primitive_type "int"
function_declarator (+24 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "ngx_ssl_cache_pwd_t"
init_declarator
pointer_declarator
* "*"
identifier "data"
= "="
identifier "userdata"
; ";"
declaration
type_identifier "ngx_str_t"
pointer_declarator
* "*"
identifier "pwd"
; ";"
if_statement (+38 nodes collapsed)
expression_statement
assignment_expression
field_expression
identifier "data"
-> "->"
field_identifier "encrypted"
= "="
number_literal "1"
; ";"
expression_statement
assignment_expression
identifier "pwd"
= "="
field_expression
identifier "data"
-> "->"
field_identifier "pwd"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "pwd"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
return_statement
return "return"
number_literal "0"
; ";"
} "}"
if_statement (+56 nodes collapsed)
expression_statement
call_expression
identifier "ngx_memcpy"
argument_list
( "("
identifier "buf"
, ","
field_expression
identifier "pwd"
-> "->"
field_identifier "data"
, ","
identifier "size"
) ")"
; ";"
return_statement
return "return"
identifier "size"
; ";"
} "}"
function_definition (+25 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+350 nodes collapsed)
function_definition (+27 nodes collapsed)
function_definition (+176 nodes collapsed)
function_definition (+350 nodes collapsed)
function_definition (+180 nodes collapsed)
function_definition (+157 nodes collapsed)
function_definition (+51 nodes collapsed)
function_definition (+146 nodes collapsed)
function_definition (+325 nodes collapsed)