0

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;
}
4

0 に答える 0