u = r->upstream;
- if (!r->post_action && !u->conf->ignore_client_abort) {
+ u->store = (u->conf->store || u->conf->store_lengths);
+
+ if (!u->store && !r->post_action && !u->conf->ignore_client_abort) {
r->read_event_handler = ngx_http_upstream_rd_check_broken_connection;
r->write_event_handler = ngx_http_upstream_wr_check_broken_connection;
}
cln->data = r;
u->cleanup = &cln->handler;
- u->store = (u->conf->store || u->conf->store_lengths);
-
if (u->resolved == NULL) {
uscf = u->conf->upstream;
u = r->upstream;
if (c->error) {
- ngx_http_upstream_finalize_request(r, u,
- NGX_HTTP_CLIENT_CLOSED_REQUEST);
+ if (!u->cacheable) {
+ ngx_http_upstream_finalize_request(r, u,
+ NGX_HTTP_CLIENT_CLOSED_REQUEST);
+ }
return;
}
ev->error = 1;
}
- if (!u->cacheable && !u->store && u->peer.connection) {
+ if (!u->cacheable && u->peer.connection) {
ngx_log_error(NGX_LOG_INFO, ev->log, ev->kq_errno,
"kevent() reported that client closed prematurely "
"connection, so upstream connection is closed too");
ev->eof = 1;
c->error = 1;
- if (!u->cacheable && !u->store && u->peer.connection) {
+ if (!u->cacheable && u->peer.connection) {
ngx_log_error(NGX_LOG_INFO, ev->log, err,
"client closed prematurely connection, "
"so upstream connection is closed too");
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http upstream downstream error");
- if (!u->cacheable && u->peer.connection) {
+ if (!u->cacheable && !u->store && u->peer.connection) {
ngx_http_upstream_finalize_request(r, u, 0);
}
}