Хэш-таблицы в nginx

Andrei Nigmatulin anight at eyelinkmedia.com
Tue Jul 25 20:48:49 MSD 2006


On Tuesday 25 July 2006 20:20, Igor Sysoev wrote:
> On Tue, 25 Jul 2006, Konstantin Sorokin wrote:
> > Игорь, а я правильно понимаю, что судя по (src/core/ngx_hash.c)
> >
> > if (names[n].key.len >= 255) {
> >    ngx_log_error(NGX_LOG_EMERG, hinit->pool->log, 0,
> >        "the \"%V\" value to hash is to long: %uz bytes, "
> >        "the maximum length can be 255 bytes only",
> >        &names[n].key, names[n].key.len);
> >    return NGX_ERROR;
> > }
> >
> > Длина ключа в nginx'овой хэш-таблице не может быть больше 255 ? А почему
> > так ? Что может поломаться, если это увеличить ?
>
> Потому что корзина устроена так:
>
> void*   указатель
> u_char  длина ключа1
> u_char  ключ1[длина]
> u-char  выравнивание до указателя
>
> void*   указатель
> u_char  длина ключа2
> u_char  ключ2[длина]
> u-char  выравнивание до указателя

В этом случае можно использовать неиспользуемые младшие биты указателя для 
расширения длины ключа.

>
> ...
>
> void*   NULL
>
>
> Игорь Сысоев
> http://sysoev.ru

-- 
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take


More information about the nginx-ru mailing list