Skip to main content

Module tls

Module tls 

Source

Modules§

stats

Structs§

OsRng
TcpIoWrapper

Statics§

FETCH_BYTE_CAP
【2026-07-29】HTTPS 取得の結果を段階別に集計する。
OS_RNG_CALL_COUNTER 🔒
【2026-07-24診断用】get_ticks()だけをシードにすると、短時間に連続して TLS接続を開く場合(例: 外部CSS/フォントの立て続けの取得)に同じtick値を 読んでしまい、複数の接続で全く同一の「乱数」シーケンス(ClientHello random、 鍵交換の一時鍵等)が生成されうる。1回目のHTTPS接続は成功するが2回目以降が 毎回TLSハンドシェイクに失敗する未解明の現象の調査の一環として、呼び出し毎に 必ず異なる値になるよう単調増加カウンタを合成し、この可能性を切り分ける。
WRITE_RETX_COUNT
そのうち再送に至った回数(=本当に応答が来なかった回)。
WRITE_WAIT_CALLS
WRITE_WAIT_TICKS
【2026-08-05 計測】retry_write 経路で送信後に待った累計 tick と回数。

Functions§

https_get
https_get_binary
https_get_binary_attempt 🔒
1回分のHTTPS GET試行。戻り値は(生レスポンス, Content-Lengthと矛盾なく 完全に受信できたか)。呼び出し元https_get_binaryがこれを複数回試行し、 打ち切り(TLSタイムアウト等による部分受信)を検出したら再試行する。 remote_ipは呼び出し元で1回だけ解決済みのものを使い回す (DNS解決自体を毎試行で繰り返さないため)。
https_get_binary_keepalive
レスポンスヘッダからContent-Length(10進)を読み取る。無ければNone。 同一ホストの複数パスを 1 本の接続・1 回のハンドシェイクで取得する。
https_get_binary_measured 🔒
https_post
HTTPS POST。https_get と同じ TLS 経路で、リクエスト行を POST にし Content-Type / Content-Length ヘッダ + ボディを送信する。 フォーム送信(DuckDuckGo lite の検索等)が HTTPS で正しく届くために必須。
https_request
任意メソッド + 任意ヘッダの HTTPS リクエスト(OAuth2 / REST API 用)。 Authorization: Bearer ... などの追加ヘッダを付けて送れる。body が Some なら Content-Type / Content-Length を付与する(content_type が空なら付けない)。
response_looks_truncated 🔒
Content-Lengthが判明していて、かつ受信済みボディがそれより短い (=TLS読み取り途中で打ち切られた)場合にtrueを返す。chunked応答は 対象外(Content-Lengthヘッダを通常持たないため判定不能)。