1 #ifndef DDEBUG_H
2 #define DDEBUG_H
3 
4 #include <ngx_config.h>
5 #include <ngx_core.h>
6 
7 #if defined(DDEBUG) && (DDEBUG)
8 
9 #   if (NGX_HAVE_VARIADIC_MACROS)
10 
11 #       define dd(...) fprintf(stderr, "eval *** "); \
12             fprintf(stderr, __VA_ARGS__); \
13             fprintf(stderr, " at %s line %d.\n", __FILE__, __LINE__)
14 
15 #   else
16 
17 #include <stdarg.h>
18 #include <stdio.h>
19 
20 #include <stdarg.h>
21 
dd(const char * fmt,...)22 static void dd(const char * fmt, ...) {
23 }
24 
25 #    endif
26 
27 #else
28 
29 #   if (NGX_HAVE_VARIADIC_MACROS)
30 
31 #       define dd(...)
32 
33 #   else
34 
35 #include <stdarg.h>
36 
dd(const char * fmt,...)37 static void dd(const char * fmt, ...) {
38 }
39 
40 #   endif
41 
42 #endif
43 
44 #if defined(DDEBUG) && (DDEBUG)
45 
46 #define dd_check_read_event_handler(r)   \
47     dd("r->read_event_handler = %s", \
48         r->read_event_handler == ngx_http_block_reading ? \
49             "ngx_http_block_reading" : \
50         r->read_event_handler == ngx_http_test_reading ? \
51             "ngx_http_test_reading" : \
52         r->read_event_handler == ngx_http_request_empty_handler ? \
53             "ngx_http_request_empty_handler" : "UNKNOWN")
54 
55 #define dd_check_write_event_handler(r)   \
56     dd("r->write_event_handler = %s", \
57         r->write_event_handler == ngx_http_handler ? \
58             "ngx_http_handler" : \
59         r->write_event_handler == ngx_http_core_run_phases ? \
60             "ngx_http_core_run_phases" : \
61         r->write_event_handler == ngx_http_request_empty_handler ? \
62             "ngx_http_request_empty_handler" : "UNKNOWN")
63 
64 #else
65 
66 #define dd_check_read_event_handler(r)
67 #define dd_check_write_event_handler(r)
68 
69 #endif
70 
71 #endif /* DDEBUG_H */
72 
73