view src/core/ngx_write_chain.c @ 63:36d2c25cc9bb

nginx-0.0.1-2003-02-26-23:21:43 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 26 Feb 2003 20:21:43 +0000
parents 8ccba41a678e
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
}