#include #include #include #include #include #include #include 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 }