src: Minor optimization for appending single character
This commit is contained in:
parent
863493766d
commit
c0858d8c1a
|
@ -1228,7 +1228,7 @@ void prepare_response(Stream *stream, Http2Handler *hd,
|
||||||
close(file);
|
close(file);
|
||||||
|
|
||||||
if (query_pos == std::string::npos) {
|
if (query_pos == std::string::npos) {
|
||||||
reqpath += "/";
|
reqpath += '/';
|
||||||
} else {
|
} else {
|
||||||
reqpath.insert(query_pos, "/");
|
reqpath.insert(query_pos, "/");
|
||||||
}
|
}
|
||||||
|
|
|
@ -420,10 +420,10 @@ const request *session_impl::submit(boost::system::error_code &ec,
|
||||||
|
|
||||||
if (util::ipv6_numeric_addr(uref.host.c_str())) {
|
if (util::ipv6_numeric_addr(uref.host.c_str())) {
|
||||||
uref.host = "[" + uref.host;
|
uref.host = "[" + uref.host;
|
||||||
uref.host += "]";
|
uref.host += ']';
|
||||||
}
|
}
|
||||||
if (u.field_set & (1 << UF_PORT)) {
|
if (u.field_set & (1 << UF_PORT)) {
|
||||||
uref.host += ":";
|
uref.host += ':';
|
||||||
uref.host += util::utos(u.port);
|
uref.host += util::utos(u.port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,7 +435,7 @@ const request *session_impl::submit(boost::system::error_code &ec,
|
||||||
|
|
||||||
auto path = uref.raw_path;
|
auto path = uref.raw_path;
|
||||||
if (u.field_set & (1 << UF_QUERY)) {
|
if (u.field_set & (1 << UF_QUERY)) {
|
||||||
path += "?";
|
path += '?';
|
||||||
path += uref.raw_query;
|
path += uref.raw_query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ request_cb serve_mux::handler(request_impl &req) const {
|
||||||
auto new_uri = util::percent_encode_path(clean_path);
|
auto new_uri = util::percent_encode_path(clean_path);
|
||||||
auto &uref = req.uri();
|
auto &uref = req.uri();
|
||||||
if (!uref.raw_query.empty()) {
|
if (!uref.raw_query.empty()) {
|
||||||
new_uri += "?";
|
new_uri += '?';
|
||||||
new_uri += uref.raw_query;
|
new_uri += uref.raw_query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1177,7 +1177,7 @@ std::string get_reqline(const char *uri, const http_parser_url &u) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (util::has_uri_field(u, UF_QUERY)) {
|
if (util::has_uri_field(u, UF_QUERY)) {
|
||||||
reqline += "?";
|
reqline += '?';
|
||||||
reqline += util::get_uri_field(uri, u, UF_QUERY);
|
reqline += util::get_uri_field(uri, u, UF_QUERY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1954,7 +1954,7 @@ int main(int argc, char **argv) {
|
||||||
for (auto &req : reqlines) {
|
for (auto &req : reqlines) {
|
||||||
// For HTTP/1.1
|
// For HTTP/1.1
|
||||||
auto h1req = (*method_it).value;
|
auto h1req = (*method_it).value;
|
||||||
h1req += " ";
|
h1req += ' ';
|
||||||
h1req += req;
|
h1req += req;
|
||||||
h1req += " HTTP/1.1\r\n";
|
h1req += " HTTP/1.1\r\n";
|
||||||
for (auto &nv : shared_nva) {
|
for (auto &nv : shared_nva) {
|
||||||
|
|
12
src/http2.cc
12
src/http2.cc
|
@ -471,12 +471,12 @@ std::string rewrite_location_uri(const std::string &uri,
|
||||||
}
|
}
|
||||||
if (u.field_set & (1 << UF_QUERY)) {
|
if (u.field_set & (1 << UF_QUERY)) {
|
||||||
field = &u.field_data[UF_QUERY];
|
field = &u.field_data[UF_QUERY];
|
||||||
res += "?";
|
res += '?';
|
||||||
res.append(&uri[field->off], field->len);
|
res.append(&uri[field->off], field->len);
|
||||||
}
|
}
|
||||||
if (u.field_set & (1 << UF_FRAGMENT)) {
|
if (u.field_set & (1 << UF_FRAGMENT)) {
|
||||||
field = &u.field_data[UF_FRAGMENT];
|
field = &u.field_data[UF_FRAGMENT];
|
||||||
res += "#";
|
res += '#';
|
||||||
res.append(&uri[field->off], field->len);
|
res.append(&uri[field->off], field->len);
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
|
@ -1185,12 +1185,12 @@ std::string path_join(const char *base_path, size_t base_pathlen,
|
||||||
}
|
}
|
||||||
if (rel_querylen == 0) {
|
if (rel_querylen == 0) {
|
||||||
if (base_querylen) {
|
if (base_querylen) {
|
||||||
res += "?";
|
res += '?';
|
||||||
res.append(base_query, base_querylen);
|
res.append(base_query, base_querylen);
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
res += "?";
|
res += '?';
|
||||||
res.append(rel_query, rel_querylen);
|
res.append(rel_query, rel_querylen);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -1242,7 +1242,7 @@ std::string path_join(const char *base_path, size_t base_pathlen,
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
if (rel_querylen) {
|
if (rel_querylen) {
|
||||||
res += "?";
|
res += '?';
|
||||||
res.append(rel_query, rel_querylen);
|
res.append(rel_query, rel_querylen);
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
|
@ -1500,7 +1500,7 @@ int construct_push_component(std::string &scheme, std::string &authority,
|
||||||
if (u.field_set & (1 << UF_HOST)) {
|
if (u.field_set & (1 << UF_HOST)) {
|
||||||
http2::copy_url_component(authority, &u, UF_HOST, uri);
|
http2::copy_url_component(authority, &u, UF_HOST, uri);
|
||||||
if (u.field_set & (1 << UF_PORT)) {
|
if (u.field_set & (1 << UF_PORT)) {
|
||||||
authority += ":";
|
authority += ':';
|
||||||
authority += util::utos(u.port);
|
authority += util::utos(u.port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,7 +168,7 @@ std::string Request::make_reqpath() const {
|
||||||
? util::get_uri_field(uri.c_str(), u, UF_PATH)
|
? util::get_uri_field(uri.c_str(), u, UF_PATH)
|
||||||
: "/";
|
: "/";
|
||||||
if (util::has_uri_field(u, UF_QUERY)) {
|
if (util::has_uri_field(u, UF_QUERY)) {
|
||||||
path += "?";
|
path += '?';
|
||||||
path.append(uri.c_str() + u.field_data[UF_QUERY].off,
|
path.append(uri.c_str() + u.field_data[UF_QUERY].off,
|
||||||
u.field_data[UF_QUERY].len);
|
u.field_data[UF_QUERY].len);
|
||||||
}
|
}
|
||||||
|
@ -828,7 +828,7 @@ int HttpClient::on_upgrade_connect() {
|
||||||
reqvec[0]->method = "GET";
|
reqvec[0]->method = "GET";
|
||||||
} else {
|
} else {
|
||||||
req = (*meth).value;
|
req = (*meth).value;
|
||||||
req += " ";
|
req += ' ';
|
||||||
reqvec[0]->method = (*meth).value;
|
reqvec[0]->method = (*meth).value;
|
||||||
}
|
}
|
||||||
req += reqvec[0]->make_reqpath();
|
req += reqvec[0]->make_reqpath();
|
||||||
|
|
|
@ -596,7 +596,7 @@ void parse_mapping(const DownstreamAddr &addr, const char *src) {
|
||||||
// This effectively makes empty pattern to "/".
|
// This effectively makes empty pattern to "/".
|
||||||
pattern.assign(raw_pattern.first, raw_pattern.second);
|
pattern.assign(raw_pattern.first, raw_pattern.second);
|
||||||
util::inp_strlower(pattern);
|
util::inp_strlower(pattern);
|
||||||
pattern += "/";
|
pattern += '/';
|
||||||
} else {
|
} else {
|
||||||
pattern.assign(raw_pattern.first, slash);
|
pattern.assign(raw_pattern.first, slash);
|
||||||
util::inp_strlower(pattern);
|
util::inp_strlower(pattern);
|
||||||
|
|
|
@ -55,7 +55,7 @@ std::string create_via_header_value(int major, int minor) {
|
||||||
std::string hdrs;
|
std::string hdrs;
|
||||||
hdrs += static_cast<char>(major + '0');
|
hdrs += static_cast<char>(major + '0');
|
||||||
if (major < 2) {
|
if (major < 2) {
|
||||||
hdrs += ".";
|
hdrs += '.';
|
||||||
hdrs += static_cast<char>(minor + '0');
|
hdrs += static_cast<char>(minor + '0');
|
||||||
}
|
}
|
||||||
hdrs += " nghttpx";
|
hdrs += " nghttpx";
|
||||||
|
|
|
@ -520,7 +520,7 @@ int Http2Session::downstream_connect_proxy() {
|
||||||
std::string req = "CONNECT ";
|
std::string req = "CONNECT ";
|
||||||
req += downstream_addr.hostport.get();
|
req += downstream_addr.hostport.get();
|
||||||
if (downstream_addr.port == 80 || downstream_addr.port == 443) {
|
if (downstream_addr.port == 80 || downstream_addr.port == 443) {
|
||||||
req += ":";
|
req += ':';
|
||||||
req += util::utos(downstream_addr.port);
|
req += util::utos(downstream_addr.port);
|
||||||
}
|
}
|
||||||
req += " HTTP/1.1\r\nHost: ";
|
req += " HTTP/1.1\r\nHost: ";
|
||||||
|
|
|
@ -297,7 +297,7 @@ void upstream_accesslog(const std::vector<LogFragment> &lfv,
|
||||||
if (frac.size() < 3) {
|
if (frac.size() < 3) {
|
||||||
frac = std::string(3 - frac.size(), '0') + frac;
|
frac = std::string(3 - frac.size(), '0') + frac;
|
||||||
}
|
}
|
||||||
sec += ".";
|
sec += '.';
|
||||||
sec += frac;
|
sec += frac;
|
||||||
|
|
||||||
std::tie(p, avail) = copy(sec, avail, p);
|
std::tie(p, avail) = copy(sec, avail, p);
|
||||||
|
@ -415,12 +415,12 @@ void log_chld(pid_t pid, int rstatus, const char *msg) {
|
||||||
auto s = strsignal(sig);
|
auto s = strsignal(sig);
|
||||||
if (s) {
|
if (s) {
|
||||||
signalstr += s;
|
signalstr += s;
|
||||||
signalstr += "(";
|
signalstr += '(';
|
||||||
} else {
|
} else {
|
||||||
signalstr += "UNKNOWN(";
|
signalstr += "UNKNOWN(";
|
||||||
}
|
}
|
||||||
signalstr += util::utos(sig);
|
signalstr += util::utos(sig);
|
||||||
signalstr += ")";
|
signalstr += ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG(NOTICE) << msg << ": [" << pid << "] exited "
|
LOG(NOTICE) << msg << ": [" << pid << "] exited "
|
||||||
|
|
14
src/util.cc
14
src/util.cc
|
@ -89,7 +89,7 @@ std::string percentEncode(const unsigned char *target, size_t len) {
|
||||||
if (inRFC3986UnreservedChars(c)) {
|
if (inRFC3986UnreservedChars(c)) {
|
||||||
dest += c;
|
dest += c;
|
||||||
} else {
|
} else {
|
||||||
dest += "%";
|
dest += '%';
|
||||||
dest += UPPER_XDIGITS[c >> 4];
|
dest += UPPER_XDIGITS[c >> 4];
|
||||||
dest += UPPER_XDIGITS[(c & 0x0f)];
|
dest += UPPER_XDIGITS[(c & 0x0f)];
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ std::string percent_encode_path(const std::string &s) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
dest += "%";
|
dest += '%';
|
||||||
dest += UPPER_XDIGITS[(c >> 4) & 0x0f];
|
dest += UPPER_XDIGITS[(c >> 4) & 0x0f];
|
||||||
dest += UPPER_XDIGITS[(c & 0x0f)];
|
dest += UPPER_XDIGITS[(c & 0x0f)];
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ std::string percent_encode_token(const std::string &target) {
|
||||||
if (c != '%' && in_token(c)) {
|
if (c != '%' && in_token(c)) {
|
||||||
dest += c;
|
dest += c;
|
||||||
} else {
|
} else {
|
||||||
dest += "%";
|
dest += '%';
|
||||||
dest += UPPER_XDIGITS[c >> 4];
|
dest += UPPER_XDIGITS[c >> 4];
|
||||||
dest += UPPER_XDIGITS[(c & 0x0f)];
|
dest += UPPER_XDIGITS[(c & 0x0f)];
|
||||||
}
|
}
|
||||||
|
@ -712,7 +712,7 @@ std::string ascii_dump(const uint8_t *data, size_t len) {
|
||||||
if (c >= 0x20 && c < 0x7f) {
|
if (c >= 0x20 && c < 0x7f) {
|
||||||
res += c;
|
res += c;
|
||||||
} else {
|
} else {
|
||||||
res += ".";
|
res += '.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1103,17 +1103,17 @@ std::string make_hostport(const char *host, uint16_t port) {
|
||||||
std::string hostport;
|
std::string hostport;
|
||||||
|
|
||||||
if (ipv6) {
|
if (ipv6) {
|
||||||
hostport += "[";
|
hostport += '[';
|
||||||
}
|
}
|
||||||
|
|
||||||
hostport += host;
|
hostport += host;
|
||||||
|
|
||||||
if (ipv6) {
|
if (ipv6) {
|
||||||
hostport += "]";
|
hostport += ']';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (port != 80 && port != 443) {
|
if (port != 80 && port != 443) {
|
||||||
hostport += ":";
|
hostport += ':';
|
||||||
hostport += utos(port);
|
hostport += utos(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue