ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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;
         }


 




Copyright © Lexa Software, 1996-2009.