Closing connection using TLS
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- php
- Área
- networking
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- PHP
- Estrellas
- 1.3k
- Forks
- 160
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de reactphp/socket
-
question
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Roadmap to reactphp/socket v3 Abiertomaintenance
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
-
help wanted new feature
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Auto-generate server certs Abiertohelp wanted new feature
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
-
Support STARTTLS Abiertohelp wanted new feature
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de reactphp/socket
Issues similares
-
sync-en
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
-
sync-en
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
-
Перевод устарел
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
-
[6.x]: "Cannot use object of type stdClass as array" loading Users index (regression of #19182) Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100