comparison src/core/ngx_resolver.h @ 6367:5a16d40c63de

Resolver: TCP support. Resend DNS query over TCP once UDP response came truncated.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 28 Jan 2016 15:28:20 +0300
parents 2e5c027f2a98
children c94aba230a5a
comparison
equal deleted inserted replaced
6366:2e5c027f2a98 6367:5a16d40c63de
34 #define NGX_NO_RESOLVER (void *) -1 34 #define NGX_NO_RESOLVER (void *) -1
35 35
36 #define NGX_RESOLVER_MAX_RECURSION 50 36 #define NGX_RESOLVER_MAX_RECURSION 50
37 37
38 38
39 typedef struct ngx_resolver_s ngx_resolver_t;
40
41
39 typedef struct { 42 typedef struct {
40 ngx_connection_t *udp; 43 ngx_connection_t *udp;
44 ngx_connection_t *tcp;
41 struct sockaddr *sockaddr; 45 struct sockaddr *sockaddr;
42 socklen_t socklen; 46 socklen_t socklen;
43 ngx_str_t server; 47 ngx_str_t server;
44 ngx_log_t log; 48 ngx_log_t log;
49 ngx_buf_t *read_buf;
50 ngx_buf_t *write_buf;
51 ngx_resolver_t *resolver;
45 } ngx_resolver_connection_t; 52 } ngx_resolver_connection_t;
46 53
47 54
48 typedef struct ngx_resolver_ctx_s ngx_resolver_ctx_t; 55 typedef struct ngx_resolver_ctx_s ngx_resolver_ctx_t;
49 56
91 98
92 time_t expire; 99 time_t expire;
93 time_t valid; 100 time_t valid;
94 uint32_t ttl; 101 uint32_t ttl;
95 102
103 unsigned tcp:1;
104 #if (NGX_HAVE_INET6)
105 unsigned tcp6:1;
106 #endif
107
96 ngx_uint_t last_connection; 108 ngx_uint_t last_connection;
97 109
98 ngx_resolver_ctx_t *waiting; 110 ngx_resolver_ctx_t *waiting;
99 } ngx_resolver_node_t; 111 } ngx_resolver_node_t;
100 112
101 113
102 typedef struct { 114 struct ngx_resolver_s {
103 /* has to be pointer because of "incomplete type" */ 115 /* has to be pointer because of "incomplete type" */
104 ngx_event_t *event; 116 ngx_event_t *event;
105 void *dummy; 117 void *dummy;
106 ngx_log_t *log; 118 ngx_log_t *log;
107 119
131 ngx_queue_t addr6_resend_queue; 143 ngx_queue_t addr6_resend_queue;
132 ngx_queue_t addr6_expire_queue; 144 ngx_queue_t addr6_expire_queue;
133 #endif 145 #endif
134 146
135 time_t resend_timeout; 147 time_t resend_timeout;
148 time_t tcp_timeout;
136 time_t expire; 149 time_t expire;
137 time_t valid; 150 time_t valid;
138 151
139 ngx_uint_t log_level; 152 ngx_uint_t log_level;
140 } ngx_resolver_t; 153 };
141 154
142 155
143 struct ngx_resolver_ctx_s { 156 struct ngx_resolver_ctx_s {
144 ngx_resolver_ctx_t *next; 157 ngx_resolver_ctx_t *next;
145 ngx_resolver_t *resolver; 158 ngx_resolver_t *resolver;