Skip to content
This repository was archived by the owner on Oct 13, 2025. It is now read-only.
This repository was archived by the owner on Oct 13, 2025. It is now read-only.

when dns resolve update, because server addr maybe changed, hence we may get the wrong $upstream_addr http variable #86

@leeweishi

Description

@leeweishi

we need to save the server addr somewhere else, just like below

static ngx_int_t
ngx_http_upstream_get_jdomain_peer(ngx_peer_connection_t *pc,
void *data)
{
ngx_http_upstream_jdomain_peer_data_t *jp = data;
ngx_http_request_t *r;
ngx_http_upstream_t *u;
ngx_int_t rc;

ngx_str_t                             *addr;
u_char                                *p;

size_t                                 len;

ngx_log_debug0(NGX_LOG_DEBUG_HTTP, pc->log, 0,
           "get jdomain peer");

rc = jp->original_get_peer(pc, jp->data);

if (rc != NGX_OK) {
    return rc;
}

r = jp->request;
u = r->upstream;

len = pc->name->len;
p = ngx_pnalloc(r->pool, len);
if (p == NULL) {
    return NGX_ERROR;
}

ngx_memcpy(p, pc->name->data, len);

addr = ngx_palloc(r->pool, sizeof(ngx_str_t));
if (addr == NULL) {
    return NGX_ERROR;
}

addr->data = p;
addr->len = len;
pc->name = addr;

return NGX_OK;

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions