ПРОЕКТЫ 


  АРХИВ 


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: nginx-0.3.36



On Thu, 6 Apr 2006, Anton Maksimenkov wrote:

Изменения в nginx 0.3.36                                          05.04.2006

     *) Добавление: модуль ngx_http_addition_filter_module.

При его задействовании в виде

location /header.html {
      root    /var/www/a;
}
location /footer.html {
      root    /var/www/a;
}

location / {
      add_before_body /header.html;
      add_after_body  /footer.html;
      if ($http_host ~* ^(.+)\.domen\.ru.*$) {
              set     $rootdir        /var/www/domen.com/$1;
      }
      root    /$rootdir;
}

В еррорлоге валится такое дело:
2006/04/05 09:14:25 [alert] 15782#0: *78 the http output chain is
empty while sending response to client, client: XXX.XXX.XXX.XXX,
server: www.domain.ru, URL: "/tree/03/", host: "vasya.domen.ru"

файрфокс вроде работает, а интернетексплорер при нажатии Ctrl+F5
зажирает проц (зависает) и так висит пока его не прибить.

Прилагаемый патч должен помочь.

Не помог. Точнее чем-то может и помог... В логах больше ничего не
вылазит. Однако и експлорер и фаерфокс, как бы это сказать, не видят
конца передачи (хотя страница  и вставки отображены уже, причём
последний символ нижней вставки в HTML коде полученной страницы есть).
Я проверяю на другом компе, ХР. Пожирания процессора нет, но и тот и
другой броузёры работают похоже - можно ходить по ссылкам, страничка
отображается, но индикатор загрузки не заканчивается.

Предыдущий патч нужно убрать и накатить прилагаемый.


Игорь Сысоев
http://sysoev.ru
--- src/http/modules/ngx_http_addition_filter_module.c  Tue Apr  4 15:01:51 2006
+++ src/http/modules/ngx_http_addition_filter_module.c  Thu Apr  6 08:20:19 2006
@@ -16,8 +16,7 @@
 
 
 typedef struct {
-    unsigned    before_body_sent:1;
-    unsigned    after_body_sent:1;
+    ngx_uint_t  before_body_sent;
 } ngx_http_addition_ctx_t;
 
 
@@ -155,17 +154,14 @@
     for (cl = in; cl; cl = cl->next) {
         if (cl->buf->last_buf) {
             cl->buf->last_buf = 0;
+            cl->buf->sync = 1;
             last = 1;
         }
     }
 
     rc = ngx_http_next_body_filter(r, in);
 
-    if (rc == NGX_ERROR
-        || !last
-        || ctx->after_body_sent
-        || conf->after_body.len == 0)
-    {
+    if (rc == NGX_ERROR || !last || conf->after_body.len == 0) {
         return rc;
     }
 
@@ -173,7 +169,7 @@
         return NGX_ERROR;
     }
 
-    ctx->after_body_sent = 1;
+    ngx_http_set_ctx(r, NULL, ngx_http_addition_filter_module);
 
     return ngx_http_send_special(r, NGX_HTTP_LAST);
 }


 




Copyright © Lexa Software, 1996-2009.