Squid 7 half_closed_clients:クライアントの書き込み側クローズの扱い
Squid 7 の half_closed_clients ポリシーで、生の TCP テストクライアントからの早期 EOF を解釈します。
TCP クライアントはリクエストの送信を終えたあと、応答を待ち続けながら書き込み側を閉じることがあります。小さな生の TCP テストを HTTP クライアントと比較するとき、Squid のこの状態に対するポリシーが重要になります。
Squid 7 では、ドキュメントに記載されたデフォルトは次のとおりです。
half_closed_clients off
このポリシーでは、読み取りがこれ以上受信データがないと報告した時点で、Squid はクライアント接続を閉じます。オプションを有効にすると、読み取りまたは書き込みでエラーが発生するまで接続を維持できます。ドキュメントは通常のフォワードプロキシ運用にはデフォルトの off ポリシーを推奨しています。
テストクライアントが入力の終わりを通知する時点を記録してください。stdin の EOF に達するパイプラインは、応答を読みながら送信側を開いたままにするクライアントとは異なる動作をすることがあります。同じ HTTP リクエストのバイト列を送っていてもです。
テストクライアントが完全に終了すると、その後に届く応答を読むことはできません。サーバー側のハーフクローズ設定でそのクライアントプロセスの寿命を変えることはできません。
意図したテストに合わせて、クライアントの EOF 動作とプロキシポリシーを一緒に選んでください。ハーフクローズポリシーは有効なフレーミングを持つ HTTP メッセージも前提とします。欠けたリクエストボディを補ったり、不完全なヘッダーブロックを修復したりはしません。