Closing connection using TLS
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 45/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- php
- Domínio
- networking
Direção de pesquisa
Start in src/Connection.php around the shutdown logic referenced by the issue, then reproduce the provided TLS server example. Compare the proposed fclose and stream_socket_enable_crypto approaches against PHP's TLS shutdown behavior; done means closing the connection cleanly without the current TLS shutdown problem.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
When closing a connection on a server using TLS, eg:
<?php
require __DIR__ . '/vendor/autoload.php';
$server = new React\Socket\TcpServer($port = 9900);
$server = new React\Socket\SecureServer($server, null, [
'local_cert' => 'server.pem',
'passphrase' => 'secret'
]);
$server->on('connection', function (React\Socket\ConnectionInterface $connection) {
echo '[' . $connection->getRemoteAddress() . ' connected]' . PHP_EOL;
// do stuff
$connection->end();
});
the connection is not closed properly, as https://github.com/reactphp/socket/blob/e04478a14b22c2f85697b917dcc26fa8f1654098/src/Connection.php#L123-L133
uses https://www.php.net/manual/en/function.stream-socket-shutdown.php.
Note comment https://www.php.net/manual/en/function.stream-socket-shutdown.php#125659 which states tls does not get shut down properly that way.
Solution seems to be to replace @\stream_socket_shutdown($this->stream, \STREAM_SHUT_RDWR); with \fclose($this->stream).
Other solution seems to be to call @\stream_socket_enable_crypto($this->stream, false); before the socket shutdown as mentioned in comment https://www.php.net/manual/en/function.stream-socket-shutdown.php#126303
- Linguagem predominante
- PHP
- Estrelas
- 1.3k
- Forks
- 160
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de reactphp/socket
-
question
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
-
maintenance
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
-
help wanted new feature
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
-
Auto-generate server certs Abertahelp wanted new feature
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
-
Support STARTTLS Abertahelp wanted new feature
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
Todas as issues de reactphp/socket
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
-
Admissions heading updates Abertaa11y admissions.uiowa.edu needs grooming SiteImprove best practice
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Save States Menu Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
pluginsGLPI/datainjection#673 ·