Игорь, а я правильно понимаю, что судя по (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 выравнивание до указателя
В этом случае можно использовать неиспользуемые младшие биты указателя для
расширения длины ключа.
Два бита из указателя уже используются для wildcard-хэша.
Но вообще, ограничение в 255 сивмолов - это ограничения для ключа, а не
для значения.
Игорь Сысоев
http://sysoev.ru