Closing connection using TLS
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 45/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- php
- Domaine
- networking
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- PHP
- Étoiles
- 1.3k
- Forks
- 160
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de reactphp/socket
-
question
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
-
Roadmap to reactphp/socket v3 Ouvertemaintenance
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
-
help wanted new feature
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
-
Auto-generate server certs Ouvertehelp wanted new feature
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
-
Support STARTTLS Ouvertehelp wanted new feature
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
Toutes les issues de reactphp/socket
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
phpstan/phpstan-doctrine#794 ·
-
Upgrade of litesaml/lightsaml? Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
SocialiteProviders/Providers#1493 ·
-
support
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
-
sync-en
Difficulté 1/5 1-3 heures Accessibilité débutants 85/100