mirror of
https://github.com/nginx/nginx.git
synced 2024-11-23 20:19:02 +08:00
Core: inheritance of non-reusable shared memory zones.
When re-creating a non-reusable zone, make the pointer to the old zone available during the new zone initialization.
This commit is contained in:
parent
9fe119b431
commit
1524c5e3fc
@ -38,7 +38,7 @@ static ngx_connection_t dumb;
|
|||||||
ngx_cycle_t *
|
ngx_cycle_t *
|
||||||
ngx_init_cycle(ngx_cycle_t *old_cycle)
|
ngx_init_cycle(ngx_cycle_t *old_cycle)
|
||||||
{
|
{
|
||||||
void *rv;
|
void *rv, *data;
|
||||||
char **senv;
|
char **senv;
|
||||||
ngx_uint_t i, n;
|
ngx_uint_t i, n;
|
||||||
ngx_log_t *log;
|
ngx_log_t *log;
|
||||||
@ -438,6 +438,8 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
|
|||||||
opart = &old_cycle->shared_memory.part;
|
opart = &old_cycle->shared_memory.part;
|
||||||
oshm_zone = opart->elts;
|
oshm_zone = opart->elts;
|
||||||
|
|
||||||
|
data = NULL;
|
||||||
|
|
||||||
for (n = 0; /* void */ ; n++) {
|
for (n = 0; /* void */ ; n++) {
|
||||||
|
|
||||||
if (n >= opart->nelts) {
|
if (n >= opart->nelts) {
|
||||||
@ -461,9 +463,13 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (shm_zone[i].tag == oshm_zone[n].tag && shm_zone[i].noreuse) {
|
||||||
|
data = oshm_zone[n].data;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (shm_zone[i].tag == oshm_zone[n].tag
|
if (shm_zone[i].tag == oshm_zone[n].tag
|
||||||
&& shm_zone[i].shm.size == oshm_zone[n].shm.size
|
&& shm_zone[i].shm.size == oshm_zone[n].shm.size)
|
||||||
&& !shm_zone[i].noreuse)
|
|
||||||
{
|
{
|
||||||
shm_zone[i].shm.addr = oshm_zone[n].shm.addr;
|
shm_zone[i].shm.addr = oshm_zone[n].shm.addr;
|
||||||
#if (NGX_WIN32)
|
#if (NGX_WIN32)
|
||||||
@ -490,7 +496,7 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
|
|||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shm_zone[i].init(&shm_zone[i], NULL) != NGX_OK) {
|
if (shm_zone[i].init(&shm_zone[i], data) != NGX_OK) {
|
||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user