ПРОЕКТЫ 


  АРХИВ 


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]

Re: guid to nginx internals



Начало цитаты:
    if (m[1] == 'O') {

        if (m[0] == 'P' && m[2] == 'S' && m[3] == 'T') {
            r->method = NGX_HTTP_POST;
            break;
        }

        if (m[0] == 'C' && m[2] == 'P' && m[3] == 'Y') {
            r->method = NGX_HTTP_COPY;
            break;
        }
    ...
That's a man who cares about performance. 
Конец цитаты.

Я не спец в C, и не читал той дискуссии по strncmp, но по моему
проверять 2-й байт, а потом 1-й - не самый оптимальный шаблон доступа к
памяти

Мне кажется что лучше проверять так, хотя могу и ошибаться:

#define  STR4_GET  0x00544547
#define  STR4_POST 0x54534f50

uint32_t tmp4;

tmp4 = *(uint32_t*)m;
switch(tmp4) {
// методы следуют в порядке падения популярности, первым разумеется GET
  case STR4_GET:
    r->method = NGX_HTTP_GET;
    break;
  case STR4_POST:
//  if(m[5] == 0)       // необязательно, но чтобы исключить
// неправильный метод как POSTME
    r->method = NGX_HTTP_POST;
    break;
..........
}

On Mon, 30 Apr 2007 16:02:02 +0400
Igor Sysoev <is@xxxxxxxxxxxxx> wrote:

> Отличное на мой взгляд описание внутреннего устройства:
> http://www.riceonfire.org/emiller/nginx-modules-guide.html
> 
> 
> -- 
> Igor Sysoev
> http://sysoev.ru/en/
> 



 




Copyright © Lexa Software, 1996-2009.