Lines Matching +full:- +full:- +full:without +full:- +full:nghttp2
18 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
21 * SPDX-License-Identifier: curl
32 #include <nghttp2/nghttp2.h>
51 e->name = p = ((char *)e) + sizeof(*e); in entry_new()
53 e->namelen = namelen; in entry_new()
54 e->value = p += namelen + 1; /* leave a \0 at the end of name */ in entry_new()
56 e->valuelen = valuelen; in entry_new()
58 Curl_strntolower(e->name, e->name, e->namelen); in entry_new()
67 size_t valuelen2 = e->valuelen + 1 + valuelen; in entry_append()
71 e2 = calloc(1, sizeof(*e) + e->namelen + valuelen2 + 2); in entry_append()
74 e2->name = p = ((char *)e2) + sizeof(*e2); in entry_append()
75 memcpy(p, e->name, e->namelen); in entry_append()
76 e2->namelen = e->namelen; in entry_append()
77 e2->value = p += e->namelen + 1; /* leave a \0 at the end of name */ in entry_append()
78 memcpy(p, e->value, e->valuelen); in entry_append()
79 p += e->valuelen; in entry_append()
82 e2->valuelen = valuelen2; in entry_append()
96 dynhds->hds = NULL; in Curl_dynhds_init()
97 dynhds->hds_len = dynhds->hds_allc = dynhds->strs_len = 0; in Curl_dynhds_init()
98 dynhds->max_entries = max_entries; in Curl_dynhds_init()
99 dynhds->max_strs_size = max_strs_size; in Curl_dynhds_init()
100 dynhds->opts = 0; in Curl_dynhds_init()
106 if(dynhds->hds && dynhds->hds_len) { in Curl_dynhds_free()
108 DEBUGASSERT(dynhds->hds); in Curl_dynhds_free()
109 for(i = 0; i < dynhds->hds_len; ++i) { in Curl_dynhds_free()
110 entry_free(dynhds->hds[i]); in Curl_dynhds_free()
113 Curl_safefree(dynhds->hds); in Curl_dynhds_free()
114 dynhds->hds_len = dynhds->hds_allc = dynhds->strs_len = 0; in Curl_dynhds_free()
120 if(dynhds->hds_len) { in Curl_dynhds_reset()
122 DEBUGASSERT(dynhds->hds); in Curl_dynhds_reset()
123 for(i = 0; i < dynhds->hds_len; ++i) { in Curl_dynhds_reset()
124 entry_free(dynhds->hds[i]); in Curl_dynhds_reset()
125 dynhds->hds[i] = NULL; in Curl_dynhds_reset()
128 dynhds->hds_len = dynhds->strs_len = 0; in Curl_dynhds_reset()
133 return dynhds->hds_len; in Curl_dynhds_count()
138 dynhds->opts = opts; in Curl_dynhds_set_opts()
144 return (n < dynhds->hds_len)? dynhds->hds[n] : NULL; in Curl_dynhds_getn()
151 for(i = 0; i < dynhds->hds_len; ++i) { in Curl_dynhds_get()
152 if(dynhds->hds[i]->namelen == namelen && in Curl_dynhds_get()
153 strncasecompare(dynhds->hds[i]->name, name, namelen)) { in Curl_dynhds_get()
154 return dynhds->hds[i]; in Curl_dynhds_get()
173 if(dynhds->max_entries && dynhds->hds_len >= dynhds->max_entries) in Curl_dynhds_add()
175 if(dynhds->strs_len + namelen + valuelen > dynhds->max_strs_size) in Curl_dynhds_add()
178 entry = entry_new(name, namelen, value, valuelen, dynhds->opts); in Curl_dynhds_add()
182 if(dynhds->hds_len + 1 >= dynhds->hds_allc) { in Curl_dynhds_add()
183 size_t nallc = dynhds->hds_len + 16; in Curl_dynhds_add()
186 if(dynhds->max_entries && nallc > dynhds->max_entries) in Curl_dynhds_add()
187 nallc = dynhds->max_entries; in Curl_dynhds_add()
192 if(dynhds->hds) { in Curl_dynhds_add()
193 memcpy(nhds, dynhds->hds, in Curl_dynhds_add()
194 dynhds->hds_len * sizeof(struct dynhds_entry *)); in Curl_dynhds_add()
195 Curl_safefree(dynhds->hds); in Curl_dynhds_add()
197 dynhds->hds = nhds; in Curl_dynhds_add()
198 dynhds->hds_allc = nallc; in Curl_dynhds_add()
200 dynhds->hds[dynhds->hds_len++] = entry; in Curl_dynhds_add()
202 dynhds->strs_len += namelen + valuelen; in Curl_dynhds_add()
232 if(!dynhds->hds_len) in Curl_dynhds_h1_add_line()
237 --line_len; in Curl_dynhds_h1_add_line()
241 e = dynhds->hds[dynhds->hds_len-1]; in Curl_dynhds_h1_add_line()
245 dynhds->hds[dynhds->hds_len-1] = e2; in Curl_dynhds_h1_add_line()
254 namelen = p - line; in Curl_dynhds_h1_add_line()
261 valuelen = line_len - i; in Curl_dynhds_h1_add_line()
267 valuelen = (size_t)(p - value); in Curl_dynhds_h1_add_line()
296 if(dynhds->hds_len) { in Curl_dynhds_count_name()
298 for(i = 0; i < dynhds->hds_len; ++i) { in Curl_dynhds_count_name()
299 if((namelen == dynhds->hds[i]->namelen) && in Curl_dynhds_count_name()
300 strncasecompare(name, dynhds->hds[i]->name, namelen)) in Curl_dynhds_count_name()
324 if(dynhds->hds_len) { in Curl_dynhds_remove()
326 for(i = 0; i < dynhds->hds_len; ++i) { in Curl_dynhds_remove()
327 if((namelen == dynhds->hds[i]->namelen) && in Curl_dynhds_remove()
328 strncasecompare(name, dynhds->hds[i]->name, namelen)) { in Curl_dynhds_remove()
330 --dynhds->hds_len; in Curl_dynhds_remove()
331 dynhds->strs_len -= (dynhds->hds[i]->namelen + in Curl_dynhds_remove()
332 dynhds->hds[i]->valuelen); in Curl_dynhds_remove()
333 entry_free(dynhds->hds[i]); in Curl_dynhds_remove()
334 len = dynhds->hds_len - i; /* remaining entries */ in Curl_dynhds_remove()
336 memmove(&dynhds->hds[i], &dynhds->hds[i + 1], in Curl_dynhds_remove()
337 len * sizeof(dynhds->hds[i])); in Curl_dynhds_remove()
339 --i; /* do this index again */ in Curl_dynhds_remove()
358 if(!dynhds->hds_len) in Curl_dynhds_h1_dprint()
361 for(i = 0; i < dynhds->hds_len; ++i) { in Curl_dynhds_h1_dprint()
363 (int)dynhds->hds[i]->namelen, dynhds->hds[i]->name, in Curl_dynhds_h1_dprint()
364 (int)dynhds->hds[i]->valuelen, dynhds->hds[i]->value); in Curl_dynhds_h1_dprint()
376 nghttp2_nv *nva = calloc(1, sizeof(nghttp2_nv) * dynhds->hds_len); in Curl_dynhds_to_nva()
383 for(i = 0; i < dynhds->hds_len; ++i) { in Curl_dynhds_to_nva()
384 struct dynhds_entry *e = dynhds->hds[i]; in Curl_dynhds_to_nva()
386 nva[i].name = (unsigned char *)e->name; in Curl_dynhds_to_nva()
387 nva[i].namelen = e->namelen; in Curl_dynhds_to_nva()
388 nva[i].value = (unsigned char *)e->value; in Curl_dynhds_to_nva()
389 nva[i].valuelen = e->valuelen; in Curl_dynhds_to_nva()
392 *pcount = dynhds->hds_len; in Curl_dynhds_to_nva()