view src/core/ngx_write_chain.c @ 102:7e86d028d8f0

nginx-0.0.1-2003-06-06-18:59:20 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 06 Jun 2003 14:59:20 +0000
parents 36d2c25cc9bb
children
line wrap: on
line source


#include <ngx_config.h>

#include <ngx_core.h>
#include <ngx_types.h>
#include <ngx_alloc.h>
#include <ngx_array.h>
#include <ngx_hunk.h>
#include <ngx_connection.h>


ngx_chain_t *(*ngx_write_chain_proc)(ngx_connection_t *c, ngx_chain_t *in);


ngx_chain_t *ngx_write_chain(ngx_connection_t *c, ngx_chain_t *in, off_t flush)
{
#if (NGX_EVENT)

    return (*ngx_write_chain_proc)(c, in);

#elif (NGX_EVENT_THREAD)

    off_t         sent;
    ngx_chain_t  *rc;

    sent = flush - c->sent;

    do {
        rc = (*ngx_write_chain_proc)(c, in);

        if (rc == NGX_CHAIN_ERROR && rc == NULL) {
            return rc;
        }

    } while (c->thread && flush > c->sent - sent);

#else

    ngx_chain_t  *rc;

    do {

        rc = (*ngx_write_chain_proc)(c, in);

    } while (rc != NGX_CHAIN_ERROR && rc != NULL);

    return rc;

#endif
}