src: Prefer std::array
This commit is contained in:
parent
9a2d36fc6c
commit
4cda09beff
|
@ -402,11 +402,11 @@ int Http2Handler::fill_wb() {
|
|||
|
||||
int Http2Handler::read_clear() {
|
||||
int rv;
|
||||
uint8_t buf[8192];
|
||||
std::array<uint8_t, 8192> buf;
|
||||
|
||||
for (;;) {
|
||||
ssize_t nread;
|
||||
while ((nread = read(fd_, buf, sizeof(buf))) == -1 && errno == EINTR)
|
||||
while ((nread = read(fd_, buf.data(), buf.size())) == -1 && errno == EINTR)
|
||||
;
|
||||
if (nread == -1) {
|
||||
if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||
|
@ -417,7 +417,7 @@ int Http2Handler::read_clear() {
|
|||
if (nread == 0) {
|
||||
return -1;
|
||||
}
|
||||
rv = nghttp2_session_mem_recv(session_, buf, nread);
|
||||
rv = nghttp2_session_mem_recv(session_, buf.data(), nread);
|
||||
if (rv < 0) {
|
||||
if (rv != NGHTTP2_ERR_BAD_PREFACE) {
|
||||
std::cerr << "nghttp2_session_mem_recv() returned error: "
|
||||
|
@ -516,12 +516,12 @@ int Http2Handler::tls_handshake() {
|
|||
}
|
||||
|
||||
int Http2Handler::read_tls() {
|
||||
uint8_t buf[8192];
|
||||
std::array<uint8_t, 8192> buf;
|
||||
|
||||
ERR_clear_error();
|
||||
|
||||
for (;;) {
|
||||
auto rv = SSL_read(ssl_, buf, sizeof(buf));
|
||||
auto rv = SSL_read(ssl_, buf.data(), buf.size());
|
||||
|
||||
if (rv == 0) {
|
||||
return -1;
|
||||
|
@ -541,7 +541,7 @@ int Http2Handler::read_tls() {
|
|||
}
|
||||
|
||||
auto nread = rv;
|
||||
rv = nghttp2_session_mem_recv(session_, buf, nread);
|
||||
rv = nghttp2_session_mem_recv(session_, buf.data(), nread);
|
||||
if (rv < 0) {
|
||||
if (rv != NGHTTP2_ERR_BAD_PREFACE) {
|
||||
std::cerr << "nghttp2_session_mem_recv() returned error: "
|
||||
|
@ -624,7 +624,7 @@ int Http2Handler::on_connect() {
|
|||
if (r != 0) {
|
||||
return r;
|
||||
}
|
||||
nghttp2_settings_entry entry[4];
|
||||
std::array<nghttp2_settings_entry, 4> entry;
|
||||
size_t niv = 1;
|
||||
|
||||
entry[0].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS;
|
||||
|
@ -635,7 +635,7 @@ int Http2Handler::on_connect() {
|
|||
entry[niv].value = sessions_->get_config()->header_table_size;
|
||||
++niv;
|
||||
}
|
||||
r = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE, entry, niv);
|
||||
r = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE, entry.data(), niv);
|
||||
if (r != 0) {
|
||||
return r;
|
||||
}
|
||||
|
@ -682,20 +682,18 @@ int Http2Handler::submit_file_response(const std::string &status,
|
|||
nghttp2_data_provider *data_prd) {
|
||||
std::string content_length = util::utos(file_length);
|
||||
std::string last_modified_str;
|
||||
nghttp2_nv nva[] = {
|
||||
http2::make_nv_ls(":status", status),
|
||||
http2::make_nv_ls("server", NGHTTPD_SERVER),
|
||||
http2::make_nv_ls("content-length", content_length),
|
||||
http2::make_nv_ll("cache-control", "max-age=3600"),
|
||||
http2::make_nv_ls("date", sessions_->get_cached_date()),
|
||||
http2::make_nv_ll("", ""),
|
||||
};
|
||||
auto nva = make_array(http2::make_nv_ls(":status", status),
|
||||
http2::make_nv_ls("server", NGHTTPD_SERVER),
|
||||
http2::make_nv_ls("content-length", content_length),
|
||||
http2::make_nv_ll("cache-control", "max-age=3600"),
|
||||
http2::make_nv_ls("date", sessions_->get_cached_date()),
|
||||
http2::make_nv_ll("", ""));
|
||||
size_t nvlen = 5;
|
||||
if (last_modified != 0) {
|
||||
last_modified_str = util::http_date(last_modified);
|
||||
nva[nvlen++] = http2::make_nv_ls("last-modified", last_modified_str);
|
||||
}
|
||||
return nghttp2_submit_response(session_, stream->stream_id, nva, nvlen,
|
||||
return nghttp2_submit_response(session_, stream->stream_id, nva.data(), nvlen,
|
||||
data_prd);
|
||||
}
|
||||
|
||||
|
|
|
@ -113,13 +113,13 @@ namespace {
|
|||
// Returns numeric address string of |addr|. If getnameinfo() is
|
||||
// failed, "unknown" is returned.
|
||||
std::string numeric_name(addrinfo *addr) {
|
||||
char host[NI_MAXHOST];
|
||||
auto rv = getnameinfo(addr->ai_addr, addr->ai_addrlen, host, sizeof(host),
|
||||
nullptr, 0, NI_NUMERICHOST);
|
||||
std::array<char, NI_MAXHOST> host;
|
||||
auto rv = getnameinfo(addr->ai_addr, addr->ai_addrlen, host.data(),
|
||||
host.size(), nullptr, 0, NI_NUMERICHOST);
|
||||
if (rv != 0) {
|
||||
return "unknown";
|
||||
}
|
||||
return host;
|
||||
return host.data();
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
@ -622,11 +622,11 @@ void HttpClient::disconnect() {
|
|||
int HttpClient::read_clear() {
|
||||
ev_timer_again(loop, &rt);
|
||||
|
||||
uint8_t buf[8192];
|
||||
std::array<uint8_t, 8192> buf;
|
||||
|
||||
for (;;) {
|
||||
ssize_t nread;
|
||||
while ((nread = read(fd, buf, sizeof(buf))) == -1 && errno == EINTR)
|
||||
while ((nread = read(fd, buf.data(), buf.size())) == -1 && errno == EINTR)
|
||||
;
|
||||
if (nread == -1) {
|
||||
if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||
|
@ -639,7 +639,7 @@ int HttpClient::read_clear() {
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (on_readfn(*this, buf, nread) != 0) {
|
||||
if (on_readfn(*this, buf.data(), nread) != 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
@ -773,17 +773,18 @@ int HttpClient::on_upgrade_connect() {
|
|||
ssize_t rv;
|
||||
record_handshake_time();
|
||||
assert(!reqvec.empty());
|
||||
nghttp2_settings_entry iv[32];
|
||||
size_t niv = populate_settings(iv);
|
||||
assert(sizeof(settings_payload) >= 8 * niv);
|
||||
rv = nghttp2_pack_settings_payload(settings_payload, sizeof(settings_payload),
|
||||
iv, niv);
|
||||
std::array<nghttp2_settings_entry, 32> iv;
|
||||
size_t niv = populate_settings(iv.data());
|
||||
assert(settings_payload.size() >= 8 * niv);
|
||||
rv = nghttp2_pack_settings_payload(settings_payload.data(),
|
||||
settings_payload.size(), iv.data(), niv);
|
||||
if (rv < 0) {
|
||||
return -1;
|
||||
}
|
||||
settings_payloadlen = rv;
|
||||
auto token68 = base64::encode(&settings_payload[0],
|
||||
&settings_payload[settings_payloadlen]);
|
||||
auto token68 =
|
||||
base64::encode(std::begin(settings_payload),
|
||||
std::begin(settings_payload) + settings_payloadlen);
|
||||
util::to_token68(token68);
|
||||
std::string req;
|
||||
if (reqvec[0]->data_prd) {
|
||||
|
@ -934,8 +935,8 @@ int HttpClient::on_connect() {
|
|||
if (!reqvec[0]->data_prd) {
|
||||
stream_user_data = reqvec[0].get();
|
||||
}
|
||||
rv = nghttp2_session_upgrade(session, settings_payload, settings_payloadlen,
|
||||
stream_user_data);
|
||||
rv = nghttp2_session_upgrade(session, settings_payload.data(),
|
||||
settings_payloadlen, stream_user_data);
|
||||
if (rv != 0) {
|
||||
std::cerr << "[ERROR] nghttp2_session_upgrade() returned error: "
|
||||
<< nghttp2_strerror(rv) << std::endl;
|
||||
|
@ -953,9 +954,9 @@ int HttpClient::on_connect() {
|
|||
// HTTP2-Settings header field has already been submitted to
|
||||
// session object.
|
||||
if (!need_upgrade()) {
|
||||
nghttp2_settings_entry iv[16];
|
||||
auto niv = populate_settings(iv);
|
||||
rv = nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv, niv);
|
||||
std::array<nghttp2_settings_entry, 16> iv;
|
||||
auto niv = populate_settings(iv.data());
|
||||
rv = nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv.data(), niv);
|
||||
if (rv != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
@ -1112,9 +1113,9 @@ int HttpClient::read_tls() {
|
|||
|
||||
ERR_clear_error();
|
||||
|
||||
uint8_t buf[8192];
|
||||
std::array<uint8_t, 8192> buf;
|
||||
for (;;) {
|
||||
auto rv = SSL_read(ssl, buf, sizeof(buf));
|
||||
auto rv = SSL_read(ssl, buf.data(), buf.size());
|
||||
|
||||
if (rv == 0) {
|
||||
return -1;
|
||||
|
@ -1133,7 +1134,7 @@ int HttpClient::read_tls() {
|
|||
}
|
||||
}
|
||||
|
||||
if (on_readfn(*this, buf, rv) != 0) {
|
||||
if (on_readfn(*this, buf.data(), rv) != 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
@ -1523,10 +1524,11 @@ int on_data_chunk_recv_callback(nghttp2_session *session, uint8_t flags,
|
|||
if (req->inflater) {
|
||||
while (len > 0) {
|
||||
const size_t MAX_OUTLEN = 4096;
|
||||
uint8_t out[MAX_OUTLEN];
|
||||
std::array<uint8_t, MAX_OUTLEN> out;
|
||||
size_t outlen = MAX_OUTLEN;
|
||||
size_t tlen = len;
|
||||
int rv = nghttp2_gzip_inflate(req->inflater, out, &outlen, data, &tlen);
|
||||
int rv =
|
||||
nghttp2_gzip_inflate(req->inflater, out.data(), &outlen, data, &tlen);
|
||||
if (rv != 0) {
|
||||
nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE, stream_id,
|
||||
NGHTTP2_INTERNAL_ERROR);
|
||||
|
@ -1536,10 +1538,10 @@ int on_data_chunk_recv_callback(nghttp2_session *session, uint8_t flags,
|
|||
req->response_len += outlen;
|
||||
|
||||
if (!config.null_out) {
|
||||
std::cout.write(reinterpret_cast<const char *>(out), outlen);
|
||||
std::cout.write(reinterpret_cast<const char *>(out.data()), outlen);
|
||||
}
|
||||
|
||||
update_html_parser(client, req, out, outlen, 0);
|
||||
update_html_parser(client, req, out.data(), outlen, 0);
|
||||
data += tlen;
|
||||
len -= tlen;
|
||||
}
|
||||
|
@ -2197,9 +2199,10 @@ int run(char **uris, int n) {
|
|||
<< std::endl;
|
||||
}
|
||||
while (1) {
|
||||
char buf[1024];
|
||||
std::array<char, 1024> buf;
|
||||
ssize_t rret, wret;
|
||||
while ((rret = read(0, buf, sizeof(buf))) == -1 && errno == EINTR)
|
||||
while ((rret = read(0, buf.data(), buf.size())) == -1 &&
|
||||
errno == EINTR)
|
||||
;
|
||||
if (rret == 0)
|
||||
break;
|
||||
|
@ -2208,7 +2211,8 @@ int run(char **uris, int n) {
|
|||
<< std::endl;
|
||||
return 1;
|
||||
}
|
||||
while ((wret = write(data_fd, buf, rret)) == -1 && errno == EINTR)
|
||||
while ((wret = write(data_fd, buf.data(), rret)) == -1 &&
|
||||
errno == EINTR)
|
||||
;
|
||||
if (wret != rret) {
|
||||
std::cerr << "[ERROR] I/O error while writing to temporary file"
|
||||
|
|
|
@ -263,7 +263,7 @@ struct HttpClient {
|
|||
bool upgrade_response_complete;
|
||||
RingBuf<65536> wb;
|
||||
// SETTINGS payload sent as token68 in HTTP Upgrade
|
||||
uint8_t settings_payload[128];
|
||||
std::array<uint8_t, 128> settings_payload;
|
||||
|
||||
enum { ERR_CONNECT_FAIL = -100 };
|
||||
};
|
||||
|
|
|
@ -1212,7 +1212,7 @@ int Http2Session::on_connect() {
|
|||
|
||||
flow_control_ = true;
|
||||
|
||||
nghttp2_settings_entry entry[3];
|
||||
std::array<nghttp2_settings_entry, 3> entry;
|
||||
entry[0].settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH;
|
||||
entry[0].value = 0;
|
||||
entry[1].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS;
|
||||
|
@ -1221,8 +1221,8 @@ int Http2Session::on_connect() {
|
|||
entry[2].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
|
||||
entry[2].value = (1 << get_config()->http2_downstream_window_bits) - 1;
|
||||
|
||||
rv = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE, entry,
|
||||
util::array_size(entry));
|
||||
rv = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE, entry.data(),
|
||||
entry.size());
|
||||
if (rv != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -703,15 +703,15 @@ Http2Upstream::Http2Upstream(ClientHandler *handler)
|
|||
flow_control_ = true;
|
||||
|
||||
// TODO Maybe call from outside?
|
||||
nghttp2_settings_entry entry[2];
|
||||
std::array<nghttp2_settings_entry, 2> entry;
|
||||
entry[0].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS;
|
||||
entry[0].value = get_config()->http2_max_concurrent_streams;
|
||||
|
||||
entry[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
|
||||
entry[1].value = (1 << get_config()->http2_upstream_window_bits) - 1;
|
||||
|
||||
rv = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE, entry,
|
||||
util::array_size(entry));
|
||||
rv = nghttp2_submit_settings(session_, NGHTTP2_FLAG_NONE, entry.data(),
|
||||
entry.size());
|
||||
if (rv != 0) {
|
||||
ULOG(ERROR, this) << "nghttp2_submit_settings() returned error: "
|
||||
<< nghttp2_strerror(rv);
|
||||
|
|
|
@ -637,13 +637,13 @@ http_parser_settings htp_hooks = {
|
|||
|
||||
int HttpDownstreamConnection::on_read() {
|
||||
ev_timer_again(conn_.loop, &conn_.rt);
|
||||
uint8_t buf[8192];
|
||||
std::array<uint8_t, 8192> buf;
|
||||
int rv;
|
||||
|
||||
if (downstream_->get_upgraded()) {
|
||||
// For upgraded connection, just pass data to the upstream.
|
||||
for (;;) {
|
||||
auto nread = conn_.read_clear(buf, sizeof(buf));
|
||||
auto nread = conn_.read_clear(buf.data(), buf.size());
|
||||
|
||||
if (nread == 0) {
|
||||
return 0;
|
||||
|
@ -653,8 +653,8 @@ int HttpDownstreamConnection::on_read() {
|
|||
return nread;
|
||||
}
|
||||
|
||||
rv = downstream_->get_upstream()->on_downstream_body(downstream_, buf,
|
||||
nread, true);
|
||||
rv = downstream_->get_upstream()->on_downstream_body(
|
||||
downstream_, buf.data(), nread, true);
|
||||
if (rv != 0) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -667,7 +667,7 @@ int HttpDownstreamConnection::on_read() {
|
|||
}
|
||||
|
||||
for (;;) {
|
||||
auto nread = conn_.read_clear(buf, sizeof(buf));
|
||||
auto nread = conn_.read_clear(buf.data(), buf.size());
|
||||
|
||||
if (nread == 0) {
|
||||
return 0;
|
||||
|
@ -677,8 +677,9 @@ int HttpDownstreamConnection::on_read() {
|
|||
return nread;
|
||||
}
|
||||
|
||||
auto nproc = http_parser_execute(&response_htp_, &htp_hooks,
|
||||
reinterpret_cast<char *>(buf), nread);
|
||||
auto nproc =
|
||||
http_parser_execute(&response_htp_, &htp_hooks,
|
||||
reinterpret_cast<char *>(buf.data()), nread);
|
||||
|
||||
if (nproc != static_cast<size_t>(nread)) {
|
||||
if (LOG_ENABLED(INFO)) {
|
||||
|
|
|
@ -438,7 +438,7 @@ SpdyUpstream::SpdyUpstream(uint16_t version, ClientHandler *handler)
|
|||
initial_window_size_ = 0;
|
||||
}
|
||||
// TODO Maybe call from outside?
|
||||
spdylay_settings_entry entry[2];
|
||||
std::array<spdylay_settings_entry, 2> entry;
|
||||
entry[0].settings_id = SPDYLAY_SETTINGS_MAX_CONCURRENT_STREAMS;
|
||||
entry[0].value = get_config()->http2_max_concurrent_streams;
|
||||
entry[0].flags = SPDYLAY_ID_FLAG_SETTINGS_NONE;
|
||||
|
@ -447,8 +447,8 @@ SpdyUpstream::SpdyUpstream(uint16_t version, ClientHandler *handler)
|
|||
entry[1].value = initial_window_size_;
|
||||
entry[1].flags = SPDYLAY_ID_FLAG_SETTINGS_NONE;
|
||||
|
||||
rv = spdylay_submit_settings(session_, SPDYLAY_FLAG_SETTINGS_NONE, entry,
|
||||
util::array_size(entry));
|
||||
rv = spdylay_submit_settings(session_, SPDYLAY_FLAG_SETTINGS_NONE,
|
||||
entry.data(), entry.size());
|
||||
assert(rv == 0);
|
||||
|
||||
if (version >= SPDYLAY_PROTO_SPDY3_1 &&
|
||||
|
|
Loading…
Reference in New Issue