Mercurial > hg > nginx
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; |