まず、私は C プログラマーではなく、OpenSSL コードベースは巨大です。そのため、コードを掘り下げる時間とスキルがあれば、おそらく答えを見つけることができる質問をすることを許してください。
私が知る限り、TLS は TCP 上で実行されます。TCP はストリーム指向であるため、メッセージがいつ配信されたかを知る方法はありません。着信メッセージの長さを事前に把握するか、スキャンする区切り文字を指定する必要があります。
それを念頭に置いて、完全なペイロードを受信する前に、OpenSSL がハートビート リクエストを処理するにはどうすればよいでしょうか?
OpenSSL がペイロードの長さを受信した後、TCP ソケットから読み取った最初のデータ チャンクの処理を開始した場合、OpenSSL は安全でないだけでなく、通常の操作では壊れているように見えます。TCP の最大セグメント サイズは 536 バイトであるため、それより大きいペイロードは複数の TCP セグメントにまたがり、複数のソケット読み取りにまたがる可能性があります。
問題は、OpenSSL がまだ配信されていないメッセージの処理をどのように/なぜ開始できるのかということです。