ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Когда может возникнуть ситуация, что rev->instance != instance?
  • From: "megalodon" <nginx-forum@xxxxxxxx>
  • Date: Fri, 27 Sep 2013 03:32:53 -0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=helium.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=n87vSTKBgzFMm1GtR3ehO1YgG/zKMozq7FeAVMN0NqI=; b=HuIw8iomq0sNZvSqoNB2dfPh9mVZUBHHDLkKbHLh+tyjSDsZs2Msfk5+NG4f18FLXQc58sMeDS/q8M7UaGhW4KhwWbylHuhRScX3A3i5Jo+80mvPANyck8ux1MUaLgxG3+vrvd4NW9NpoE8sAa4jaeUyAAcHz4RSFBTNu2HfZG8=;

Добрый день.

В функции 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 ??

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,243182,243182#msg-243182

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.