src: Make token of type int32_t; we have no reason to use int16_t
This commit is contained in:
parent
f2a7275700
commit
b68be1e1fb
16
src/http2.cc
16
src/http2.cc
|
@ -271,7 +271,7 @@ void copy_url_component(std::string &dest, const http_parser_url *u, int field,
|
||||||
|
|
||||||
Headers::value_type to_header(const uint8_t *name, size_t namelen,
|
Headers::value_type to_header(const uint8_t *name, size_t namelen,
|
||||||
const uint8_t *value, size_t valuelen,
|
const uint8_t *value, size_t valuelen,
|
||||||
bool no_index, int16_t token) {
|
bool no_index, int32_t token) {
|
||||||
return Header(std::string(reinterpret_cast<const char *>(name), namelen),
|
return Header(std::string(reinterpret_cast<const char *>(name), namelen),
|
||||||
std::string(reinterpret_cast<const char *>(value), valuelen),
|
std::string(reinterpret_cast<const char *>(value), valuelen),
|
||||||
no_index, token);
|
no_index, token);
|
||||||
|
@ -279,7 +279,7 @@ Headers::value_type to_header(const uint8_t *name, size_t namelen,
|
||||||
|
|
||||||
void add_header(Headers &nva, const uint8_t *name, size_t namelen,
|
void add_header(Headers &nva, const uint8_t *name, size_t namelen,
|
||||||
const uint8_t *value, size_t valuelen, bool no_index,
|
const uint8_t *value, size_t valuelen, bool no_index,
|
||||||
int16_t token) {
|
int32_t token) {
|
||||||
if (valuelen > 0) {
|
if (valuelen > 0) {
|
||||||
size_t i, j;
|
size_t i, j;
|
||||||
for (i = 0; i < valuelen && (value[i] == ' ' || value[i] == '\t'); ++i)
|
for (i = 0; i < valuelen && (value[i] == ' ' || value[i] == '\t'); ++i)
|
||||||
|
@ -760,7 +760,7 @@ void init_hdidx(HeaderIndex &hdidx) {
|
||||||
std::fill(std::begin(hdidx), std::end(hdidx), -1);
|
std::fill(std::begin(hdidx), std::end(hdidx), -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void index_header(HeaderIndex &hdidx, int16_t token, size_t idx) {
|
void index_header(HeaderIndex &hdidx, int32_t token, size_t idx) {
|
||||||
if (token == -1) {
|
if (token == -1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -769,7 +769,7 @@ void index_header(HeaderIndex &hdidx, int16_t token, size_t idx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool check_http2_request_pseudo_header(const HeaderIndex &hdidx,
|
bool check_http2_request_pseudo_header(const HeaderIndex &hdidx,
|
||||||
int16_t token) {
|
int32_t token) {
|
||||||
switch (token) {
|
switch (token) {
|
||||||
case HD__AUTHORITY:
|
case HD__AUTHORITY:
|
||||||
case HD__METHOD:
|
case HD__METHOD:
|
||||||
|
@ -782,7 +782,7 @@ bool check_http2_request_pseudo_header(const HeaderIndex &hdidx,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool check_http2_response_pseudo_header(const HeaderIndex &hdidx,
|
bool check_http2_response_pseudo_header(const HeaderIndex &hdidx,
|
||||||
int16_t token) {
|
int32_t token) {
|
||||||
switch (token) {
|
switch (token) {
|
||||||
case HD__STATUS:
|
case HD__STATUS:
|
||||||
return hdidx[token] == -1;
|
return hdidx[token] == -1;
|
||||||
|
@ -791,7 +791,7 @@ bool check_http2_response_pseudo_header(const HeaderIndex &hdidx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool http2_header_allowed(int16_t token) {
|
bool http2_header_allowed(int32_t token) {
|
||||||
switch (token) {
|
switch (token) {
|
||||||
case HD_CONNECTION:
|
case HD_CONNECTION:
|
||||||
case HD_KEEP_ALIVE:
|
case HD_KEEP_ALIVE:
|
||||||
|
@ -813,7 +813,7 @@ bool http2_mandatory_request_headers_presence(const HeaderIndex &hdidx) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Headers::value_type *get_header(const HeaderIndex &hdidx, int16_t token,
|
const Headers::value_type *get_header(const HeaderIndex &hdidx, int32_t token,
|
||||||
const Headers &nva) {
|
const Headers &nva) {
|
||||||
auto i = hdidx[token];
|
auto i = hdidx[token];
|
||||||
if (i == -1) {
|
if (i == -1) {
|
||||||
|
@ -822,7 +822,7 @@ const Headers::value_type *get_header(const HeaderIndex &hdidx, int16_t token,
|
||||||
return &nva[i];
|
return &nva[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
Headers::value_type *get_header(const HeaderIndex &hdidx, int16_t token,
|
Headers::value_type *get_header(const HeaderIndex &hdidx, int32_t token,
|
||||||
Headers &nva) {
|
Headers &nva) {
|
||||||
auto i = hdidx[token];
|
auto i = hdidx[token];
|
||||||
if (i == -1) {
|
if (i == -1) {
|
||||||
|
|
20
src/http2.h
20
src/http2.h
|
@ -44,7 +44,7 @@ namespace nghttp2 {
|
||||||
|
|
||||||
struct Header {
|
struct Header {
|
||||||
Header(std::string name, std::string value, bool no_index = false,
|
Header(std::string name, std::string value, bool no_index = false,
|
||||||
int16_t token = -1)
|
int32_t token = -1)
|
||||||
: name(std::move(name)),
|
: name(std::move(name)),
|
||||||
value(std::move(value)),
|
value(std::move(value)),
|
||||||
token(token),
|
token(token),
|
||||||
|
@ -62,7 +62,7 @@ struct Header {
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
std::string value;
|
std::string value;
|
||||||
int16_t token;
|
int32_t token;
|
||||||
bool no_index;
|
bool no_index;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -89,14 +89,14 @@ void copy_url_component(std::string &dest, const http_parser_url *u, int field,
|
||||||
|
|
||||||
Headers::value_type to_header(const uint8_t *name, size_t namelen,
|
Headers::value_type to_header(const uint8_t *name, size_t namelen,
|
||||||
const uint8_t *value, size_t valuelen,
|
const uint8_t *value, size_t valuelen,
|
||||||
bool no_index, int16_t token);
|
bool no_index, int32_t token);
|
||||||
|
|
||||||
// Add name/value pairs to |nva|. If |no_index| is true, this
|
// Add name/value pairs to |nva|. If |no_index| is true, this
|
||||||
// name/value pair won't be indexed when it is forwarded to the next
|
// name/value pair won't be indexed when it is forwarded to the next
|
||||||
// hop. This function strips white spaces around |value|.
|
// hop. This function strips white spaces around |value|.
|
||||||
void add_header(Headers &nva, const uint8_t *name, size_t namelen,
|
void add_header(Headers &nva, const uint8_t *name, size_t namelen,
|
||||||
const uint8_t *value, size_t valuelen, bool no_index,
|
const uint8_t *value, size_t valuelen, bool no_index,
|
||||||
int16_t token);
|
int32_t token);
|
||||||
|
|
||||||
// Returns pointer to the entry in |nva| which has name |name|. If
|
// Returns pointer to the entry in |nva| which has name |name|. If
|
||||||
// more than one entries which have the name |name|, last occurrence
|
// more than one entries which have the name |name|, last occurrence
|
||||||
|
@ -277,30 +277,30 @@ int lookup_token(const std::string &name);
|
||||||
// array containing at least HD_MAXIDX elements.
|
// array containing at least HD_MAXIDX elements.
|
||||||
void init_hdidx(HeaderIndex &hdidx);
|
void init_hdidx(HeaderIndex &hdidx);
|
||||||
// Indexes header |token| using index |idx|.
|
// Indexes header |token| using index |idx|.
|
||||||
void index_header(HeaderIndex &hdidx, int16_t token, size_t idx);
|
void index_header(HeaderIndex &hdidx, int32_t token, size_t idx);
|
||||||
|
|
||||||
// Returns true if HTTP/2 request pseudo header |token| is not indexed
|
// Returns true if HTTP/2 request pseudo header |token| is not indexed
|
||||||
// yet and not -1.
|
// yet and not -1.
|
||||||
bool check_http2_request_pseudo_header(const HeaderIndex &hdidx, int16_t token);
|
bool check_http2_request_pseudo_header(const HeaderIndex &hdidx, int32_t token);
|
||||||
|
|
||||||
// Returns true if HTTP/2 response pseudo header |token| is not
|
// Returns true if HTTP/2 response pseudo header |token| is not
|
||||||
// indexed yet and not -1.
|
// indexed yet and not -1.
|
||||||
bool check_http2_response_pseudo_header(const HeaderIndex &hdidx,
|
bool check_http2_response_pseudo_header(const HeaderIndex &hdidx,
|
||||||
int16_t token);
|
int32_t token);
|
||||||
|
|
||||||
// Returns true if header field denoted by |token| is allowed for
|
// Returns true if header field denoted by |token| is allowed for
|
||||||
// HTTP/2.
|
// HTTP/2.
|
||||||
bool http2_header_allowed(int16_t token);
|
bool http2_header_allowed(int32_t token);
|
||||||
|
|
||||||
// Returns true that |hdidx| contains mandatory HTTP/2 request
|
// Returns true that |hdidx| contains mandatory HTTP/2 request
|
||||||
// headers.
|
// headers.
|
||||||
bool http2_mandatory_request_headers_presence(const HeaderIndex &hdidx);
|
bool http2_mandatory_request_headers_presence(const HeaderIndex &hdidx);
|
||||||
|
|
||||||
// Returns header denoted by |token| using index |hdidx|.
|
// Returns header denoted by |token| using index |hdidx|.
|
||||||
const Headers::value_type *get_header(const HeaderIndex &hdidx, int16_t token,
|
const Headers::value_type *get_header(const HeaderIndex &hdidx, int32_t token,
|
||||||
const Headers &nva);
|
const Headers &nva);
|
||||||
|
|
||||||
Headers::value_type *get_header(const HeaderIndex &hdidx, int16_t token,
|
Headers::value_type *get_header(const HeaderIndex &hdidx, int32_t token,
|
||||||
Headers &nva);
|
Headers &nva);
|
||||||
|
|
||||||
struct LinkHeader {
|
struct LinkHeader {
|
||||||
|
|
|
@ -273,34 +273,7 @@ bool Request::is_ipv6_literal_addr() const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Request::response_pseudo_header_allowed(int16_t token) const {
|
Headers::value_type *Request::get_res_header(int32_t token) {
|
||||||
if (!res_nva.empty() && res_nva.back().name.c_str()[0] != ':') {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
switch (token) {
|
|
||||||
case http2::HD__STATUS:
|
|
||||||
return res_hdidx[token] == -1;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Request::push_request_pseudo_header_allowed(int16_t token) const {
|
|
||||||
if (!req_nva.empty() && req_nva.back().name.c_str()[0] != ':') {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
switch (token) {
|
|
||||||
case http2::HD__AUTHORITY:
|
|
||||||
case http2::HD__METHOD:
|
|
||||||
case http2::HD__PATH:
|
|
||||||
case http2::HD__SCHEME:
|
|
||||||
return req_hdidx[token] == -1;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Headers::value_type *Request::get_res_header(int16_t token) {
|
|
||||||
auto idx = res_hdidx[token];
|
auto idx = res_hdidx[token];
|
||||||
if (idx == -1) {
|
if (idx == -1) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -308,7 +281,7 @@ Headers::value_type *Request::get_res_header(int16_t token) {
|
||||||
return &res_nva[idx];
|
return &res_nva[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
Headers::value_type *Request::get_req_header(int16_t token) {
|
Headers::value_type *Request::get_req_header(int32_t token) {
|
||||||
auto idx = req_hdidx[token];
|
auto idx = req_hdidx[token];
|
||||||
if (idx == -1) {
|
if (idx == -1) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -125,11 +125,8 @@ struct Request {
|
||||||
|
|
||||||
bool is_ipv6_literal_addr() const;
|
bool is_ipv6_literal_addr() const;
|
||||||
|
|
||||||
bool response_pseudo_header_allowed(int16_t token) const;
|
Headers::value_type *get_res_header(int32_t token);
|
||||||
bool push_request_pseudo_header_allowed(int16_t token) const;
|
Headers::value_type *get_req_header(int32_t token);
|
||||||
|
|
||||||
Headers::value_type *get_res_header(int16_t token);
|
|
||||||
Headers::value_type *get_req_header(int16_t token);
|
|
||||||
|
|
||||||
void record_request_start_time();
|
void record_request_start_time();
|
||||||
void record_response_start_time();
|
void record_response_start_time();
|
||||||
|
|
|
@ -331,7 +331,7 @@ void Downstream::crumble_request_cookie(std::vector<nghttp2_nv> &nva) {
|
||||||
namespace {
|
namespace {
|
||||||
void add_header(bool &key_prev, size_t &sum, Headers &headers,
|
void add_header(bool &key_prev, size_t &sum, Headers &headers,
|
||||||
const StringRef &name, const StringRef &value, bool no_index,
|
const StringRef &name, const StringRef &value, bool no_index,
|
||||||
int16_t token) {
|
int32_t token) {
|
||||||
key_prev = true;
|
key_prev = true;
|
||||||
sum += name.size() + value.size();
|
sum += name.size() + value.size();
|
||||||
headers.emplace_back(name.str(), value.str(), no_index, token);
|
headers.emplace_back(name.str(), value.str(), no_index, token);
|
||||||
|
@ -340,7 +340,7 @@ void add_header(bool &key_prev, size_t &sum, Headers &headers,
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
void add_header(size_t &sum, Headers &headers, const StringRef &name,
|
void add_header(size_t &sum, Headers &headers, const StringRef &name,
|
||||||
const StringRef &value, bool no_index, int16_t token) {
|
const StringRef &value, bool no_index, int32_t token) {
|
||||||
sum += name.size() + value.size();
|
sum += name.size() + value.size();
|
||||||
headers.emplace_back(name.str(), value.str(), no_index, token);
|
headers.emplace_back(name.str(), value.str(), no_index, token);
|
||||||
}
|
}
|
||||||
|
@ -388,7 +388,7 @@ int FieldStore::parse_content_length() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Headers::value_type *FieldStore::header(int16_t token) const {
|
const Headers::value_type *FieldStore::header(int32_t token) const {
|
||||||
for (auto it = headers_.rbegin(); it != headers_.rend(); ++it) {
|
for (auto it = headers_.rbegin(); it != headers_.rend(); ++it) {
|
||||||
auto &kv = *it;
|
auto &kv = *it;
|
||||||
if (kv.token == token) {
|
if (kv.token == token) {
|
||||||
|
@ -398,7 +398,7 @@ const Headers::value_type *FieldStore::header(int16_t token) const {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Headers::value_type *FieldStore::header(int16_t token) {
|
Headers::value_type *FieldStore::header(int32_t token) {
|
||||||
for (auto it = headers_.rbegin(); it != headers_.rend(); ++it) {
|
for (auto it = headers_.rbegin(); it != headers_.rend(); ++it) {
|
||||||
auto &kv = *it;
|
auto &kv = *it;
|
||||||
if (kv.token == token) {
|
if (kv.token == token) {
|
||||||
|
@ -422,7 +422,7 @@ void FieldStore::add_header_lower(const StringRef &name, const StringRef &value,
|
||||||
}
|
}
|
||||||
|
|
||||||
void FieldStore::add_header_token(const StringRef &name, const StringRef &value,
|
void FieldStore::add_header_token(const StringRef &name, const StringRef &value,
|
||||||
bool no_index, int16_t token) {
|
bool no_index, int32_t token) {
|
||||||
shrpx::add_header(buffer_size_, headers_, name, value, no_index, token);
|
shrpx::add_header(buffer_size_, headers_, name, value, no_index, token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -449,7 +449,7 @@ void FieldStore::add_trailer_lower(const StringRef &name,
|
||||||
|
|
||||||
void FieldStore::add_trailer_token(const StringRef &name,
|
void FieldStore::add_trailer_token(const StringRef &name,
|
||||||
const StringRef &value, bool no_index,
|
const StringRef &value, bool no_index,
|
||||||
int16_t token) {
|
int32_t token) {
|
||||||
// Header size limit should be applied to all header and trailer
|
// Header size limit should be applied to all header and trailer
|
||||||
// fields combined.
|
// fields combined.
|
||||||
shrpx::add_header(buffer_size_, trailers_, name, value, no_index, token);
|
shrpx::add_header(buffer_size_, trailers_, name, value, no_index, token);
|
||||||
|
|
|
@ -73,8 +73,8 @@ public:
|
||||||
// multiple header have |name| as name, return last occurrence from
|
// multiple header have |name| as name, return last occurrence from
|
||||||
// the beginning. If no such header is found, returns nullptr.
|
// the beginning. If no such header is found, returns nullptr.
|
||||||
// This function must be called after headers are indexed
|
// This function must be called after headers are indexed
|
||||||
const Headers::value_type *header(int16_t token) const;
|
const Headers::value_type *header(int32_t token) const;
|
||||||
Headers::value_type *header(int16_t token);
|
Headers::value_type *header(int32_t token);
|
||||||
// Returns pointer to the header field with the name |name|. If no
|
// Returns pointer to the header field with the name |name|. If no
|
||||||
// such header is found, returns nullptr.
|
// such header is found, returns nullptr.
|
||||||
const Headers::value_type *header(const StringRef &name) const;
|
const Headers::value_type *header(const StringRef &name) const;
|
||||||
|
@ -82,7 +82,7 @@ public:
|
||||||
void add_header_lower(const StringRef &name, const StringRef &value,
|
void add_header_lower(const StringRef &name, const StringRef &value,
|
||||||
bool no_index);
|
bool no_index);
|
||||||
void add_header_token(const StringRef &name, const StringRef &value,
|
void add_header_token(const StringRef &name, const StringRef &value,
|
||||||
bool no_index, int16_t token);
|
bool no_index, int32_t token);
|
||||||
|
|
||||||
void append_last_header_key(const char *data, size_t len);
|
void append_last_header_key(const char *data, size_t len);
|
||||||
void append_last_header_value(const char *data, size_t len);
|
void append_last_header_value(const char *data, size_t len);
|
||||||
|
@ -99,7 +99,7 @@ public:
|
||||||
void add_trailer_lower(const StringRef &name, const StringRef &value,
|
void add_trailer_lower(const StringRef &name, const StringRef &value,
|
||||||
bool no_index);
|
bool no_index);
|
||||||
void add_trailer_token(const StringRef &name, const StringRef &value,
|
void add_trailer_token(const StringRef &name, const StringRef &value,
|
||||||
bool no_index, int16_t token);
|
bool no_index, int32_t token);
|
||||||
|
|
||||||
void append_last_trailer_key(const char *data, size_t len);
|
void append_last_trailer_key(const char *data, size_t len);
|
||||||
void append_last_trailer_value(const char *data, size_t len);
|
void append_last_trailer_value(const char *data, size_t len);
|
||||||
|
|
Loading…
Reference in New Issue