如何压扁nginx缓冲链?

时间:2014-03-08 19:56:09

标签: nginx

我正在尝试使用nginx缓冲链并在一些实验代码中使用它。为了做到这一点,我需要先将链变平为一块内存。这是我到目前为止所得到的(实际生产代码有点不同,所以这是未经测试的):

u_char *flatten_chain(ngx_chain_t   *out) {
    off_t       bsize;
    ngx_chain_t *out_ptr;
    u_char      *ret, *ret_ptr;
    uint64_t    flattenSize = 0;

    out_ptr = out;

    while (out_ptr) {
        if(!out_ptr->buf->in_file) {
            bsize = ngx_buf_size(out_ptr->buf);
            flattenSize += bsize;
        }
        out_ptr = out_ptr->next;
    }

    ret = malloc(flattenSize);
    ret_ptr = ret;

    out_ptr = out;

    while (out_ptr) {
        bsize = ngx_buf_size(out_ptr->buf);

        if(!out_ptr->buf->in_file) {
            memcpy(ret_ptr, out_ptr->buf->pos, (size_t)bsize);
            ret_ptr += bsize;
        }
        out_ptr = out_ptr->next;
    }

    return(ret);

}

然而,它似乎不起作用。免责声明:它可能 工作,我的数据在其他地方被破坏了...但是当我调查时,有人可以确认或否认上述应该工作?

谢谢!

0 个答案:

没有答案