view src/core/ngx_write_chain.c @ 114:ac69ab96328d

nginx-0.0.1-2003-07-07-10:11:50 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 07 Jul 2003 06:11:50 +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
}