TLS に mbedTLS を使用し、HTTP ヘッダーをハードコーディングして HTTPS サーバーと通信する組み込みプロジェクトに最小限の HTTPS レイヤーを実装しています。
通常の Web サイトでは問題なく動作します。しかし、これまでのところ、私の実装では、最後に読み取られたバイトが\n
.
if( ret > 0 && output[len-1] == '\n' )
{
ret = 0;
output[len] = 0;
break;
}
ただし、これは明らかな理由で常に機能するとは限りません。を試してみopenssl s_client
ましたが、同じように動作します。HTTP 応答が で終了した場合、すべてのデータをフェッチした直後に戻ります\n
。s_client
そうしないと、永久にブロックされ、次のデータを待ちます。
実際のブラウザはこれを適切に処理できるようです。タイムアウトの設定以外にできることはありますか?