Начало цитаты:
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/
>