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, "xss *** "); \
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 
22 static ngx_inline void
dd(const char * fmt,...)23 dd(const char * fmt, ...) {
24 }
25 
26 #    endif
27 
28 #else
29 
30 #   if (NGX_HAVE_VARIADIC_MACROS)
31 
32 #       define dd(...)
33 
34 #   else
35 
36 #include <stdarg.h>
37 
38 static ngx_inline void
dd(const char * fmt,...)39 dd(const char * fmt, ...) {
40 }
41 
42 #   endif
43 
44 #endif
45 
46 #if defined(DDEBUG) && (DDEBUG)
47 
48 #define dd_check_read_event_handler(r)   \
49     dd("r->read_event_handler = %s", \
50         r->read_event_handler == ngx_http_block_reading ? \
51             "ngx_http_block_reading" : \
52         r->read_event_handler == ngx_http_test_reading ? \
53             "ngx_http_test_reading" : \
54         r->read_event_handler == ngx_http_request_empty_handler ? \
55             "ngx_http_request_empty_handler" : "UNKNOWN")
56 
57 #define dd_check_write_event_handler(r)   \
58     dd("r->write_event_handler = %s", \
59         r->write_event_handler == ngx_http_handler ? \
60             "ngx_http_handler" : \
61         r->write_event_handler == ngx_http_core_run_phases ? \
62             "ngx_http_core_run_phases" : \
63         r->write_event_handler == ngx_http_request_empty_handler ? \
64             "ngx_http_request_empty_handler" : "UNKNOWN")
65 
66 #else
67 
68 #define dd_check_read_event_handler(r)
69 #define dd_check_write_event_handler(r)
70 
71 #endif
72 
73 #endif /* DDEBUG_H */
74