При ошибке в ngx_http_output_filter() в конце вызывается
ngx_http_finalize_request(r, rc), то есть, должно работать.
Я правильно понимаю, что в данной версии при ошибке в логах
"sendfile() failed (32: Broken pipe) while sending response to client"
или
"... Connection reset by peer) while sending response to client"
post_action не вызывается ?
или вот к примеру кусок из ngx_http_writer:
1618:
if (ngx_handle_write_event(wev, clcf->send_lowat) == NGX_ERROR) {
ngx_http_close_request(r, 0);
}
return;
здесь, я так понял, в случае ошибки отправки ответа клиенту соединение
просто закрывается, и возврат из функции, возможно он там где-то и
попадет в finalize (чего я не нашел) но к тому моменту уже некого будет
отправлять в post_action ....
Если в этом месте случится ошибка, то, боюсь, серверу будет не до finalize,
и даже не close_request, потому что это ошибка в этом месте говорит
о серьёзной ошибке в ядре.
Игорь Сысоев
http://sysoev.ru