Welcome! Log In Create A New Profile

Advanced

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев
September 27, 2013 06:50AM
On Friday 27 September 2013 11:32:53 megalodon wrote:
> Добрый день.
>
> В функции ngx_epoll_process_events() есть такой участок кода:
>
> for (i = 0; i < events; i++) {
> c = event_list[i].data.ptr;
>
> instance = (uintptr_t) c & 1;
> c = (ngx_connection_t *) ((uintptr_t) c & (uintptr_t) ~1);
>
> rev = c->read;
>
> if (c->fd == -1 || rev->instance != instance) {
> .....
> }
> .....
> }
>
> Условие rev->instance != instance будет проверяться, если c->fd != -1, т.е.
> в случае когда дескриптор не был закрыт.
> c->fd устанавливается в -1 в функциях: ngx_close_connection() и
> ngx_close_accepted_connection().
> Но rev->instance инвертируется в функции ngx_get_connection(), которая
> вызывается в ngx_event_accept().
>
> Получается, что несоответсвие instance возможно, когда мы не закрыли
> соединение и при этом акцептировали новое и для него была выделена уже
> существующая структура ngx_connection_t ??
>
[...]

Почему не закрыли? Закрыли, отдали объект в пул свободных, а потом
он был использован для нового соединения (и соответсвенно fd не -1).

--
Валентин Бартенев
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Когда может возникнуть ситуация, что rev->instance != instance?

megalodon September 27, 2013 03:32AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев September 27, 2013 06:50AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Maxim Dounin September 27, 2013 07:28AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

megalodon September 27, 2013 11:32AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Maxim Dounin September 27, 2013 11:52AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев September 27, 2013 11:54AM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

megalodon September 27, 2013 12:45PM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев September 27, 2013 01:08PM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

megalodon September 27, 2013 01:26PM

Re: Когда может возникнуть ситуация, что rev->instance != instance?

Валентин Бартенев September 27, 2013 01:30PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 160
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready