1*0Sigor@sysoev.ru 2*0Sigor@sysoev.ru /* 3*0Sigor@sysoev.ru * Copyright (C) Igor Sysoev 4*0Sigor@sysoev.ru * Copyright (C) NGINX, Inc. 5*0Sigor@sysoev.ru */ 6*0Sigor@sysoev.ru 7*0Sigor@sysoev.ru #include <nxt_main.h> 8*0Sigor@sysoev.ru 9*0Sigor@sysoev.ru 10*0Sigor@sysoev.ru uint32_t nxt_djb_hash(const void * data,size_t len)11*0Sigor@sysoev.runxt_djb_hash(const void *data, size_t len) 12*0Sigor@sysoev.ru { 13*0Sigor@sysoev.ru uint32_t hash; 14*0Sigor@sysoev.ru const u_char *p; 15*0Sigor@sysoev.ru 16*0Sigor@sysoev.ru p = data; 17*0Sigor@sysoev.ru hash = NXT_DJB_HASH_INIT; 18*0Sigor@sysoev.ru 19*0Sigor@sysoev.ru while (len != 0) { 20*0Sigor@sysoev.ru hash = nxt_djb_hash_add(hash, *p++); 21*0Sigor@sysoev.ru len--; 22*0Sigor@sysoev.ru } 23*0Sigor@sysoev.ru 24*0Sigor@sysoev.ru return hash; 25*0Sigor@sysoev.ru } 26*0Sigor@sysoev.ru 27*0Sigor@sysoev.ru 28*0Sigor@sysoev.ru uint32_t nxt_djb_hash_lowcase(const void * data,size_t len)29*0Sigor@sysoev.runxt_djb_hash_lowcase(const void *data, size_t len) 30*0Sigor@sysoev.ru { 31*0Sigor@sysoev.ru u_char c; 32*0Sigor@sysoev.ru uint32_t hash; 33*0Sigor@sysoev.ru const u_char *p; 34*0Sigor@sysoev.ru 35*0Sigor@sysoev.ru p = data; 36*0Sigor@sysoev.ru hash = NXT_DJB_HASH_INIT; 37*0Sigor@sysoev.ru 38*0Sigor@sysoev.ru while (len != 0) { 39*0Sigor@sysoev.ru c = *p++; 40*0Sigor@sysoev.ru hash = nxt_djb_hash_add(hash, nxt_lowcase(c)); 41*0Sigor@sysoev.ru len--; 42*0Sigor@sysoev.ru } 43*0Sigor@sysoev.ru 44*0Sigor@sysoev.ru return hash; 45*0Sigor@sysoev.ru } 46