forked from Hakase/nginx-build
Latest update - 7299
This commit is contained in:
+39
-45
@@ -141,25 +141,24 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n)
|
|||||||
ngx_pool_cleanup_t *cln;
|
ngx_pool_cleanup_t *cln;
|
||||||
ngx_resolver_connection_t *rec;
|
ngx_resolver_connection_t *rec;
|
||||||
|
|
||||||
|
r = ngx_pcalloc(cf->pool, sizeof(ngx_resolver_t));
|
||||||
|
if (r == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
r->event = ngx_pcalloc(cf->pool, sizeof(ngx_event_t));
|
||||||
|
if (r->event == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
cln = ngx_pool_cleanup_add(cf->pool, 0);
|
cln = ngx_pool_cleanup_add(cf->pool, 0);
|
||||||
if (cln == NULL) {
|
if (cln == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
cln->handler = ngx_resolver_cleanup;
|
cln->handler = ngx_resolver_cleanup;
|
||||||
|
|
||||||
r = ngx_calloc(sizeof(ngx_resolver_t), cf->log);
|
|
||||||
if (r == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
cln->data = r;
|
cln->data = r;
|
||||||
|
|
||||||
r->event = ngx_calloc(sizeof(ngx_event_t), cf->log);
|
|
||||||
if (r->event == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngx_rbtree_init(&r->name_rbtree, &r->name_sentinel,
|
ngx_rbtree_init(&r->name_rbtree, &r->name_sentinel,
|
||||||
ngx_resolver_rbtree_insert_value);
|
ngx_resolver_rbtree_insert_value);
|
||||||
|
|
||||||
@@ -276,6 +275,11 @@ ngx_resolver_create(ngx_conf_t *cf, ngx_str_t *names, ngx_uint_t n)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (n && r->connections.nelts == 0) {
|
||||||
|
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "no name servers defined");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,52 +292,42 @@ ngx_resolver_cleanup(void *data)
|
|||||||
ngx_uint_t i;
|
ngx_uint_t i;
|
||||||
ngx_resolver_connection_t *rec;
|
ngx_resolver_connection_t *rec;
|
||||||
|
|
||||||
if (r) {
|
ngx_log_debug0(NGX_LOG_DEBUG_CORE, ngx_cycle->log, 0, "cleanup resolver");
|
||||||
ngx_log_debug0(NGX_LOG_DEBUG_CORE, ngx_cycle->log, 0,
|
|
||||||
"cleanup resolver");
|
|
||||||
|
|
||||||
ngx_resolver_cleanup_tree(r, &r->name_rbtree);
|
ngx_resolver_cleanup_tree(r, &r->name_rbtree);
|
||||||
|
|
||||||
ngx_resolver_cleanup_tree(r, &r->srv_rbtree);
|
ngx_resolver_cleanup_tree(r, &r->srv_rbtree);
|
||||||
|
|
||||||
ngx_resolver_cleanup_tree(r, &r->addr_rbtree);
|
ngx_resolver_cleanup_tree(r, &r->addr_rbtree);
|
||||||
|
|
||||||
#if (NGX_HAVE_INET6)
|
#if (NGX_HAVE_INET6)
|
||||||
ngx_resolver_cleanup_tree(r, &r->addr6_rbtree);
|
ngx_resolver_cleanup_tree(r, &r->addr6_rbtree);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (r->event) {
|
if (r->event->timer_set) {
|
||||||
if (r->event->timer_set) {
|
ngx_del_timer(r->event);
|
||||||
ngx_del_timer(r->event);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ngx_free(r->event);
|
rec = r->connections.elts;
|
||||||
|
|
||||||
|
for (i = 0; i < r->connections.nelts; i++) {
|
||||||
|
if (rec[i].udp) {
|
||||||
|
ngx_close_connection(rec[i].udp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rec[i].tcp) {
|
||||||
rec = r->connections.elts;
|
ngx_close_connection(rec[i].tcp);
|
||||||
|
|
||||||
for (i = 0; i < r->connections.nelts; i++) {
|
|
||||||
if (rec[i].udp) {
|
|
||||||
ngx_close_connection(rec[i].udp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rec[i].tcp) {
|
|
||||||
ngx_close_connection(rec[i].tcp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rec[i].read_buf) {
|
|
||||||
ngx_resolver_free(r, rec[i].read_buf->start);
|
|
||||||
ngx_resolver_free(r, rec[i].read_buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rec[i].write_buf) {
|
|
||||||
ngx_resolver_free(r, rec[i].write_buf->start);
|
|
||||||
ngx_resolver_free(r, rec[i].write_buf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_free(r);
|
if (rec[i].read_buf) {
|
||||||
|
ngx_resolver_free(r, rec[i].read_buf->start);
|
||||||
|
ngx_resolver_free(r, rec[i].read_buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rec[i].write_buf) {
|
||||||
|
ngx_resolver_free(r, rec[i].write_buf->start);
|
||||||
|
ngx_resolver_free(r, rec[i].write_buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2901,7 +2901,8 @@ ngx_http_upstream_send_response(ngx_http_request_t *r, ngx_http_upstream_t *u)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (r->request_body && r->request_body->temp_file
|
if (r->request_body && r->request_body->temp_file
|
||||||
&& r == r->main && !r->preserve_body)
|
&& r == r->main && !r->preserve_body
|
||||||
|
&& !u->conf->preserve_output)
|
||||||
{
|
{
|
||||||
ngx_pool_run_cleanup_file(r->pool, r->request_body->temp_file->file.fd);
|
ngx_pool_run_cleanup_file(r->pool, r->request_body->temp_file->file.fd);
|
||||||
r->request_body->temp_file->file.fd = NGX_INVALID_FILE;
|
r->request_body->temp_file->file.fd = NGX_INVALID_FILE;
|
||||||
|
|||||||
Reference in New Issue
Block a user