sshnet / sshnet/SSH.NET

Disconnect freeze on .NET CORE 3.1 (MAC, Forward Port)

Abierto
#741 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
C#
Estrellas
4.4k
Forks
993
Merge medio
9 d 21 h
PR fusionados (30 d)
1

Descripción

I got freeze after try to disconnect with forward port.

ChannelDirectTcpip.cs

private void ForwardedPort_Closing(object sender, EventArgs eventArgs)
{
    // signal to the client that we will not send anything anymore; this should also interrupt the
    // blocking receive in Bind if the client sends FIN/ACK in time
    ShutdownSocket(SocketShutdown.Send);

    // if the FIN/ACK is not sent in time by the remote client, then interrupt the blocking receive
    // by closing the socket
    CloseSocket();
}

After debug, it freeze on CloseSocket() -> _socket.Dispose()

My solution:
I change
ShutdownSocket(SocketShutdown.Send)
to
ShutdownSocket(SocketShutdown.Both)

Please fix this issue. I don't want to include SSH.NET source code on my project.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en ChannelDirectTcpip.cs, en ForwardedPort_Closing, y sigue ShutdownSocket y CloseSocket, especialmente la llamada _socket.Dispose(), que según se informó provoca el bloqueo. Reproduce la desconexión con un puerto reenviado en .NET Core 3.1 en macOS y, después, verifica que el bloqueo ya no se produzca y añade o actualiza la cobertura de la ruta de cierre.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp, macos
Área
networking
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.