95 | 95 |
{
|
96 | 96 |
ngx_str_t s;
|
97 | 97 |
ngx_url_t u;
|
98 | |
ngx_uint_t i;
|
|
98 |
ngx_uint_t i, j;
|
99 | 99 |
ngx_resolver_t *r;
|
100 | 100 |
ngx_pool_cleanup_t *cln;
|
101 | 101 |
ngx_udp_connection_t *uc;
|
|
170 | 170 |
|
171 | 171 |
ngx_memzero(&u, sizeof(ngx_url_t));
|
172 | 172 |
|
173 | |
u.host = names[i];
|
174 | |
u.port = 53;
|
175 | |
|
176 | |
if (ngx_inet_resolve_host(cf->pool, &u) != NGX_OK) {
|
|
173 |
u.url = names[i];
|
|
174 |
u.default_port = 53;
|
|
175 |
|
|
176 |
if (ngx_parse_url(cf->pool, &u) != NGX_OK) {
|
177 | 177 |
if (u.err) {
|
178 | 178 |
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
179 | 179 |
"%s in resolver \"%V\"",
|
180 | |
u.err, &u.host);
|
|
180 |
u.err, &u.url);
|
181 | 181 |
}
|
182 | 182 |
|
183 | 183 |
return NULL;
|
184 | 184 |
}
|
185 | 185 |
|
186 | |
uc = ngx_array_push(&r->udp_connections);
|
|
186 |
uc = ngx_array_push_n(&r->udp_connections, u.naddrs);
|
187 | 187 |
if (uc == NULL) {
|
188 | 188 |
return NULL;
|
189 | 189 |
}
|
190 | 190 |
|
191 | |
ngx_memzero(uc, sizeof(ngx_udp_connection_t));
|
192 | |
|
193 | |
uc->sockaddr = u.addrs->sockaddr;
|
194 | |
uc->socklen = u.addrs->socklen;
|
195 | |
uc->server = u.addrs->name;
|
|
191 |
ngx_memzero(uc, u.naddrs * sizeof(ngx_udp_connection_t));
|
|
192 |
|
|
193 |
for (j = 0; j < u.naddrs; j++) {
|
|
194 |
uc[j].sockaddr = u.addrs[j].sockaddr;
|
|
195 |
uc[j].socklen = u.addrs[j].socklen;
|
|
196 |
uc[j].server = u.addrs[j].name;
|
|
197 |
}
|
196 | 198 |
}
|
197 | 199 |
|
198 | 200 |
return r;
|
|
976 | 978 |
|
977 | 979 |
if (rn->waiting) {
|
978 | 980 |
|
979 | |
if (ngx_resolver_send_query(r, rn) == NGX_OK) {
|
980 | |
|
981 | |
rn->expire = now + r->resend_timeout;
|
982 | |
|
983 | |
ngx_queue_insert_head(queue, &rn->queue);
|
984 | |
}
|
|
981 |
(void) ngx_resolver_send_query(r, rn);
|
|
982 |
|
|
983 |
rn->expire = now + r->resend_timeout;
|
|
984 |
|
|
985 |
ngx_queue_insert_head(queue, q);
|
985 | 986 |
|
986 | 987 |
continue;
|
987 | 988 |
}
|
|
1039 | 1040 |
nan = (query->nan_hi << 8) + query->nan_lo;
|
1040 | 1041 |
|
1041 | 1042 |
ngx_log_debug6(NGX_LOG_DEBUG_CORE, r->log, 0,
|
1042 | |
"resolver DNS response %ui fl:%04Xui %ui/%ui/%ui/%ui",
|
|
1043 |
"resolver DNS response %ui fl:%04Xui %ui/%ui/%ud/%ud",
|
1043 | 1044 |
ident, flags, nqs, nan,
|
1044 | 1045 |
(query->nns_hi << 8) + query->nns_lo,
|
1045 | 1046 |
(query->nar_hi << 8) + query->nar_lo);
|
|
2188 | 2189 |
ngx_socket_t s;
|
2189 | 2190 |
ngx_connection_t *c;
|
2190 | 2191 |
|
2191 | |
s = ngx_socket(AF_INET, SOCK_DGRAM, 0);
|
|
2192 |
s = ngx_socket(uc->sockaddr->sa_family, SOCK_DGRAM, 0);
|
2192 | 2193 |
|
2193 | 2194 |
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, &uc->log, 0, "UDP socket %d", s);
|
2194 | 2195 |
|