mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2026-10-19 11:19:36 +00:00
Report each failed client request to the error logger once
A failed request could reach the client's error logger twice: once from the step that failed, without a request when that was the TLS setup or the proxy CONNECT, and again from send_() with the request. A content receiver or progress callback that canceled was reported twice too, a CONNECT answered with 407 only without a request, and a stream that failed to open not at all unless TLS failed. Report a failure in one place instead. The outermost send() reports the request's error once, with the request the caller made, also when the failure happened on a redirect (a redirect client no longer gets the error logger) and when an answer carries an error, such as a proxy's 407. open_stream() reports a stream that fails to open the same way. Only an upload body compressed before send() still reports where it fails.
This commit is contained in:
1 parent
d99c697be6
commit
ebcd5551fd
6 files changed
+203
-58
No files matched your search
@@ -35,7 +35,7 @@ cli.set_error_logger([](const httplib::Error &err, const httplib::Request *req)
|
||||
});
|
||||
```
|
||||
|
||||
第2引数の`req`はヌルポインタのこともあります。TLSハンドシェイクやCA証明書の読み込み、プロキシのトンネル確立など、接続の準備中にエラーが起きた場合です。使う前に必ずヌルチェックしてください。
|
||||
失敗したリクエストは、送ったリクエストと一緒に1回だけ報告されます。リダイレクト先で失敗した場合も同じです。`open_stream()`や`stream::Get()`でストリームを開くのに失敗した場合も同じように報告され、ボディを読む途中のエラーは`read_error()`で返ります。`req`がヌルポインタになるのは、どのリクエストにも属さないエラーをサーバーのエラーロガーが受け取るときだけです。
|
||||
|
||||
## 両方を組み合わせる
|
||||
|
||||
|
||||
Reference in new issue
Block a user