post_action и код возврата 499

Igor Sysoev is at rambler-co.ru
Thu Dec 27 13:13:53 MSK 2007


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
-------------- next part --------------
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;
         }


More information about the nginx-ru mailing list