ПРОЕКТЫ 


  АРХИВ 


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: 0.6.30 @ linux amd64 & fcgi



On Wednesday 07 May 2008, Igor Sysoev wrote:
> On Wed, May 07, 2008 at 10:33:52PM +0400, Igor Sysoev wrote:
> > On Wed, May 07, 2008 at 05:12:58PM +0000, Sergey Serov wrote:
> > > Откат в версии 0.5.27 файла src/http/modules/ngx_http_fastcgi_module.c
> > > до версии 0.2.26 проблему решает. Изменениний на первый взгляд там
> > > минимум:
> >
> > А если попробовать прилагаемый патч для 0.5.27 ?
>
> Вернее:
>
> -        if (rc == NGX_OK) {
> +        if (rc == NGX_OK && u->buffer.pos == u->buffer.last) {
>

Про 0.5.27 см. другой пост.

В 0.6.30 после этого патча

2008/05/08 04:59:49 [debug] 25976#0: *7 http fastcgi header: "Status: 200"
2008/05/08 04:59:49 [debug] 25976#0: *7 http fastcgi parser: 0
2008/05/08 04:59:49 [debug] 25976#0: *7 http fastcgi header: "X-Catalyst: 
5.7006"
2008/05/08 04:59:49 [debug] 25976#0: *7 upstream split a header line in FastCGI 
records
2008/05/08 04:59:49 [debug] 25976#0: *7 http upstream dummy handler
2008/05/08 04:59:51 [debug] 25976#0: *7 http upstream process header
2008/05/08 04:59:51 [debug] 25976#0: *7 recv: fd:22 -1 of 0
2008/05/08 04:59:51 [alert] 25976#0: *7 recv() failed (95: Operation not 
supported) while reading response header from upstream, 
client: 125.24.35.220, server: dev.example.net, request: "GET /users/affiliates 
HTTP/1.1", 
upstream: "fastcgi://unix:/tmp/example_dev.sock:", host: "dev.example.net", 
referrer:        "http://dev.example.net/users/uploaded";

Если upstream был TCP, то сообщение вместо recv будет уже о таймауте. Но смысл 
не меняется.
Если в это время посмотреть в это время strace fcgi сервера, то видно что он 
сперва делает write всех заголовков, делает write 
перевода стркои и уже потом начинает писать собственно конент.

Я убрал опработку splitted headers и вроде бы все заработало как надо. См. патч.
Этот мой патч чем нибудь чреват практически? Не совсем уверен в том, что именно 
я сделал.


--- nginx-0.6.30.orig/src/http/modules/ngx_http_fastcgi_module.c
+++ nginx-0.6.30/src/http/modules/ngx_http_fastcgi_module.c
@@ -1231,29 +1231,14 @@
             return NGX_OK;
         }

-        if (rc == NGX_OK) {
+       if (rc == NGX_OK && u->buffer.pos == u->buffer.last) {
             return NGX_AGAIN;
         }

         /* rc == NGX_AGAIN */
-
         ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                        "upstream split a header line in FastCGI records");

-        if (f->split_parts == NULL) {
-            f->split_parts = ngx_array_create(r->pool, 1,
-                                        sizeof(ngx_http_fastcgi_split_part_t));
-            if (f->split_parts == NULL) {
-                return NGX_ERROR;
-            }
-        }
-
-        part = ngx_array_push(f->split_parts);
-
-        part->start = part_start;
-        part->end = u->buffer.last;
-
-        return NGX_AGAIN;
     }
 }







 




Copyright © Lexa Software, 1996-2009.