0.6.30 @ linux amd64 & fcgi

Igor Sysoev is at rambler-co.ru
Thu May 8 12:58:37 MSD 2008


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
-------------- next part --------------
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 */


More information about the nginx-ru mailing list