Exemplo n.º 1
0
ngx_int_t hustdb_ha_on_subrequest_complete(ngx_http_request_t * r, void * data, ngx_int_t rc)
{
    hustdb_ha_ctx_t * ctx = data;

    do
    {
        if (!ctx || NGX_HTTP_OK != r->headers_out.status)
        {
            break;
        }

        ctx->base.response.len = ngx_http_get_buf_size(&r->upstream->buffer);
        ctx->base.response.data = r->upstream->buffer.pos;

        ngx_str_t * val = ngx_http_find_head_value(&r->headers_out.headers, &VERSION_KEY);
        if (val)
        {
            if (!ctx->version.data)
            {
                ctx->version = __make_str(val, r->parent);
            }
            else
            {
                ngx_int_t src = ngx_atoi(ctx->version.data, ctx->version.len);
                ngx_int_t dst = ngx_atoi(val->data, val->len);
                if (dst > src)
                {
                    ctx->version = __make_str(val, r->parent);
                }
            }
        }

    } while (0);

    return ngx_http_finish_subrequest(r);
}
Exemplo n.º 2
0
ngx_str_t * hustdb_ha_get_keys_from_header(ngx_http_request_t * r)
{
    return ngx_http_find_head_value(&r->headers_out.headers, &KEYS_KEY);
}
Exemplo n.º 3
0
ngx_str_t * hustdb_ha_get_version(ngx_http_request_t * r)
{
    return ngx_http_find_head_value(&r->headers_out.headers, &VERSION_KEY);
}