Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: post_action и код воз врата 499
On Thu, Dec 27, 2007 at 10:44:35AM +0300, Matvei Elyutin wrote:
> Приветствую, в продолжение треда
> http://www.lexa.ru/nginx-ru/msg07782.html. Проблему так и не дожали, как
> я понял.
> Не совсем понятно поведение в следующем случае:
>
> nginx/0.6.16 отдает контент пользователю исходя из ответа апача
> (скорость, файл, итд). Запрос сначала идет в апач, который возвращает
> параметры сессии пользователя, здесь и должен запускаться post_action и
> начинаться отдача файла. Так и происходит в большинстве случаев. Если в
> соединение было прервано клиентом в тот момент, когда апач еще не
> ответил nginx'у мы получается код ответа 499:
> ip.ip.ip.ip - - [25/Dec/2007:18:31:28 +0300] "GET
> /34/mysql-5.0.18-win32.zip HTTP/1.0" 499 0 "-" "Wget/1.10.2"
> и при этом post_action не срабатывает. Мне кажется это не правильно.
Прилагаемый патч должен исправить.
--
Игорь Сысоев
http://sysoev.ru
Index: src/http/ngx_http_request.c
===================================================================
--- src/http/ngx_http_request.c (revision 1101)
+++ src/http/ngx_http_request.c (working copy)
@@ -1595,7 +1595,11 @@
rc = r->post_subrequest->handler(r, r->post_subrequest->data, rc);
}
- if (rc == NGX_ERROR || rc == NGX_HTTP_REQUEST_TIME_OUT || c->error) {
+ if (rc == NGX_ERROR
+ || rc == NGX_HTTP_REQUEST_TIME_OUT
+ || rc == NGX_HTTP_CLIENT_CLOSED_REQUEST
+ || c->error)
+ {
if (rc > 0 && r->headers_out.status == 0) {
r->headers_out.status = rc;
}
|