sshnet / sshnet/SSH.NET

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

Offen
#741 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
C#
Sterne
4.4k
Forks
993
Ø Merge
9 T. 21 Std.
Gemergte PRs (30 T.)
1

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne in ChannelDirectTcpip.cs bei ForwardedPort_Closing und verfolge ShutdownSocket und CloseSocket, insbesondere den Aufruf _socket.Dispose(), bei dem das Einfrieren gemeldet wurde. Reproduziere die Trennung mit einem weitergeleiteten Port unter .NET Core 3.1 auf macOS und überprüfe anschließend, dass das Einfrieren nicht mehr auftritt, und füge Abdeckung für den Schließpfad hinzu oder aktualisiere sie.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
csharp, macos
Bereich
networking
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.