Lines Matching defs:nv
77 static int check_pseudo_header(nghttp2_stream *stream, const nghttp2_hd_nv *nv,
79 if ((stream->http_flags & flag) || nv->value->len == 0) {
104 static int http_request_on_header(nghttp2_stream *stream, nghttp2_hd_nv *nv,
108 if (nv->name->base[0] == ':') {
115 switch (nv->token) {
117 if (!check_pseudo_header(stream, nv, NGHTTP2_HTTP_FLAG__AUTHORITY)) {
122 if (!check_pseudo_header(stream, nv, NGHTTP2_HTTP_FLAG__METHOD)) {
125 switch (nv->value->len) {
127 if (lstreq("HEAD", nv->value->base, nv->value->len)) {
132 switch (nv->value->base[6]) {
134 if (lstreq("CONNECT", nv->value->base, nv->value->len)) {
143 if (lstreq("OPTIONS", nv->value->base, nv->value->len)) {
152 if (!check_pseudo_header(stream, nv, NGHTTP2_HTTP_FLAG__PATH)) {
155 if (nv->value->base[0] == '/') {
157 } else if (nv->value->len == 1 && nv->value->base[0] == '*') {
162 if (!check_pseudo_header(stream, nv, NGHTTP2_HTTP_FLAG__SCHEME)) {
165 if ((nv->value->len == 4 && memieq("http", nv->value->base, 4)) ||
166 (nv->value->len == 5 && memieq("https", nv->value->base, 5))) {
175 if (!check_pseudo_header(stream, nv, NGHTTP2_HTTP_FLAG__PROTOCOL)) {
180 if (!check_pseudo_header(stream, nv, NGHTTP2_HTTP_FLAG_HOST)) {
188 stream->content_length = parse_uint(nv->value->base, nv->value->len);
202 if (!lstrieq("trailers", nv->value->base, nv->value->len)) {
213 if (nghttp2_http_parse_priority(&extpri, nv->value->base,
214 nv->value->len) == 0) {
224 if (nv->name->base[0] == ':') {
229 if (nv->name->base[0] != ':') {
236 static int http_response_on_header(nghttp2_stream *stream, nghttp2_hd_nv *nv,
238 if (nv->name->base[0] == ':') {
245 switch (nv->token) {
247 if (!check_pseudo_header(stream, nv, NGHTTP2_HTTP_FLAG__STATUS)) {
250 if (nv->value->len != 3) {
253 stream->status_code = (int16_t)parse_uint(nv->value->base, nv->value->len);
268 if (!lstrieq("0", nv->value->base, nv->value->len)) {
285 stream->content_length = parse_uint(nv->value->base, nv->value->len);
299 if (!lstrieq("trailers", nv->value->base, nv->value->len)) {
304 if (nv->name->base[0] == ':') {
309 if (nv->name->base[0] != ':') {
351 nghttp2_frame *frame, nghttp2_hd_nv *nv,
362 if (!nghttp2_check_header_name(nv->name->base, nv->name->len)) {
364 if (nv->name->len > 0 && nv->name->base[0] == ':') {
368 for (i = 0; i < nv->name->len; ++i) {
369 uint8_t c = nv->name->base[i];
381 switch (nv->token) {
383 rv = nghttp2_check_method(nv->value->base, nv->value->len);
386 rv = nghttp2_check_path(nv->value->base, nv->value->len);
391 rv = nghttp2_check_authority(nv->value->base, nv->value->len);
395 rv = nghttp2_check_header_value(nv->value->base, nv->value->len);
397 rv = nghttp2_check_header_value_rfc9113(nv->value->base, nv->value->len);
401 rv = check_scheme(nv->value->base, nv->value->len);
409 lws(nv->value->base, nv->value->len)) {
417 rv = nghttp2_check_header_value(nv->value->base, nv->value->len);
419 rv = nghttp2_check_header_value_rfc9113(nv->value->base, nv->value->len);
424 assert(nv->name->len > 0);
425 if (nv->name->base[0] == ':') {
436 return http_request_on_header(stream, nv, trailer,
441 return http_response_on_header(stream, nv, trailer);
565 const nghttp2_nv *nv = &nva[i];
566 if (!(nv->namelen == 7 && nv->name[6] == 'd' &&
567 memcmp(":metho", nv->name, nv->namelen - 1) == 0)) {
570 if (lstreq("CONNECT", nv->value, nv->valuelen)) {
574 if (lstreq("HEAD", nv->value, nv->valuelen)) {