Envoy ( https://github.com/envoyproxy/envoy/blob/main/source/common/formatter/substitution_formatter.cc#L1068 )から文字列を編集しようとしていますが、コードを変更してビルドをテストすると、コンパイルされますが、次のエラーが発生しました。
警告 Unhealthy 108s (x2 over 112s) kubelet, Readiness probe failed: Get "http://*****(IP but private)/healthz/ready": dial tcp *****(IP private): connect:接続拒否
私がやろうとしているのは、(val) 文字列の一部を別の文字列 (poz) に置き換えることです。%REQ(X-FORWARDED-FOR)% コマンド演算子の前後にタグを追加する必要があるだけなので、置き換えるだけで問題ないと思いました。C++ コンパイラで試してみると問題なく動作しますが、Envoy コードで試してみると上記のエラー メッセージが表示されます。
absl::optional<std::string> HeaderFormatter::format(const Http::HeaderMap& headers) const {
const Http::HeaderEntry* header = findHeader(headers);
if (!header) {
return absl::nullopt;
}
std::string val = std::string(header->value().getStringView());
truncate(val, max_length_);
std::size_t poz = val.find("%REQ(X-FORWARDED-FOR)%");
std::string val_find = "%REQ(X-FORWARDED-FOR)%";
std::string shtesa = "[tag]%REQ(X-FORWARDED-FOR)%[/tag]";
if ( 0 <= poz < val.length()) {
val.replace(poz, 21, shtesa);
return val;
}
return val;
}