適切な初期化した後、ここでは、着信HTTPS要求を処理するために無限ループだが、唯一つの要求あたりの接続(と仮定して要求は一つだけの読み取りを必要とする):この1行を変更すると、永続的なキープアライブ接続が実装されますか?
while TRUE do
begin // wait for incoming TCP connection
if listen(listen_socket, 100) 0 then continue; // listen failed
client_len := SizeOf(sa_cli);
sock := accept(listen_socket, @sa_cli, @client_len); // create socket for connection
if sock = INVALID_SOCKET then continue; // accept failed
ssl := SSL_new(ctx); // TCP connection ready, create ssl structure
if assigned(ssl) then
begin
SSL_set_fd(ssl, sock); // assign socket to ssl structure
if SSL_accept(ssl) = 1 then // handshake worked
begin
bytesin := SSL_read(ssl, buffer, sizeof(buffer)-1);
if bytesin > 0 then
begin
buffer[bytesin] := #0;
// decide on response here...
response := 'HTTP/1.0 200 OK'#13#10 + etc;
SSL_write(ssl, pchar(response)^, length(response));
end; // else read empty or failed
end; // else handshake failed
SSL_set_shutdown(ssl, SSL_SENT_SHUTDOWN or SSL_RECEIVED_SHUTDOWN);
CloseSocket(sock);
SSL_free(ssl);
end; // else ssl creation failed
end; // while
はに
if ssl_accept(ssl) = 1 then
を変えています
while ssl_accept(ssl) = 1 do
デフォルトのHTTP 1.1キープアライブを正しくサポートするために必要なものすべて(つまり、c接続)?
要求全体が1つの読むコールに満足されると仮定すると、失敗のレシピは次のとおりです。
は基本的に、あなたは、この種のモデル(擬似コード)を実装する必要があります。 – EricLaw
これは、コードを短くして問題を気にかけないために行われました。 –