ПРОЕКТЫ 


  АРХИВ 


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 Thu, May 08, 2008 at 08:41:42AM +0000, Sergey Serov wrote:

> On Thursday 08 May 2008, Igor Sysoev wrote:
> > On Thu, May 08, 2008 at 04:22:44AM +0000, Sergey Serov wrote:
> > > On Thursday 08 May 2008, Sergey Serov wrote:
> > > > On Thursday 08 May 2008, Sergey Serov wrote:
> > > > > On Wednesday 07 May 2008, Igor Sysoev wrote:
> > > > > > > А если попробовать прилагаемый патч для 0.5.27 ?
> > > > > >
> > > > > > -        if (rc == NGX_OK) {
> > > > > > +        if (rc == NGX_OK && u->buffer.pos == u->buffer.last) {
> > > > >
> > > > > В логах появляется:
> > > > > 5.7006" 2008/05/08 03:22:42 [alert] 29070#0: *1 upstream split a
> > > > > header line in FastCGI records while reading response header from
> > > > > upstream, client: 125.24.35.220, server: dev.example.net, URL:
> > > > > "/login", upstream: "fastcgi://unix:/tmp/example_dev.sock:", host:
> > > > > "dev.example.net", referrer: "http://dev.example.net/registration";
> > > >
> > > > Скорее всего я каким-то образом ошибся в пред. тесте.
> > > > Пред. раз я пересобрал не полностью, а только то что сделал make после
> > > > изменений в одном файле. После make clean (на самом деле
> > > > dpkg-buildpackage) и полной пересборки появляется все то же сообщение
> > > > про recv() failed (95: Operation not supported
> > >
> > > Это мое утверждение о том, что пред. утверждение ложно - ложно :-)
> > > Вообщем на текущий момент я убежден, что:
> > >  if (rc == NGX_OK && u->buffer.pos == u->buffer.last) {
> > > дает в логах "upstream split a header".
> >
> > Можно попробовать 0.6.30 с прилагаемым патчем  и прилать отладочный вывод
> > в районе fastcgi headers ?
> 
> Попробовал, ни разу ошибки не было. Это можно считать решением проблемы?
> 
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record length: 145
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi parser: 0
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi header: "Content-Length: 
> 15373"
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi parser: 0
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi header: "Content-Type: 
> text/html; charset=utf-8"
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi parser: 0
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi header: "Set-Cookie: 
> _ul=admin; domain=.example.net; path=/"
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi parser: 0
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi header: "Status: 200"
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi parser: 0
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi header: "X-Catalyst: 
> 5.7006"
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http upstream dummy handler
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http upstream process header
> 2008/05/08 08:17:08 [debug] 7114#0: *1 recv: fd:22 16 of 3936
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record byte: 01
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record byte: 06
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record byte: 00
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record byte: 01
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record byte: 00
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record byte: 02
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record byte: 06
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record byte: 00
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi record length: 2
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi parser: 1
> 2008/05/08 08:17:08 [debug] 7114#0: *1 http fastcgi header done
> 2008/05/08 08:17:08 [debug] 7114#0: *1 HTTP/1.1 200
> Server: nginx/0.6.30

Видимо, да. Можно проверить ещё один патч ?
По идее, условие (u->buffer.pos != u->buffer.last) в случае NGX_AGAIN
там никогда не выполняется.


-- 
Игорь Сысоев
http://sysoev.ru
Index: src/http/modules/ngx_http_fastcgi_module.c
===================================================================
--- src/http/modules/ngx_http_fastcgi_module.c  (revision 1317)
+++ src/http/modules/ngx_http_fastcgi_module.c  (working copy)
@@ -1232,7 +1232,7 @@
         }
 
         if (rc == NGX_OK) {
-            return NGX_AGAIN;
+            continue;
         }
 
         /* rc == NGX_AGAIN */


 




Copyright © Lexa Software, 1996-2009.