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