nginx-0.3.36

Igor Sysoev is at rambler-co.ru
Thu Apr 6 08:23:13 MSD 2006


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
-------------- next part --------------
--- 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);
 }


More information about the nginx-ru mailing list