Фильтр Nginx -> Вопрос о флаге последнего буфера

Просто есть вопрос о следующем коде, который я видел во многих модулях-фильтрах:

    last = 0;
    for (cl = in; cl; cl = cl->next) {
        if (cl->buf->last_buf) {
            last = 1;
            break;
        }
    }

    if(!last){
        return ngx_http_next_body_filter(r, in);
    }

В моем тесте с простым index.html я увидел в своем журнале, что "последний" не был "1". Затем я помещаю счетчик в цикл for и записываю его в свой журнал. Результат - "1".
Таким образом, цикл просто проходит через него один раз, а флаг "last-buf" не установлен.

Мне просто интересно, почему фильтры прерывают работу и просто переходят к следующему фильтру вместо того, чтобы продолжать работу даже с одним буфером в цепочке?

Может ли кто-нибудь объяснить мне, почему я должен прервать мой фильтр в этой ситуации?

Спасибо

0 ответов

Другие вопросы по тегам