Aktualisieren Sie eine Verbindung zu TLS in Go

Ich habe eine offene TCP-Verbindung und lese daraus mit einer for-Schleife wie folgt

for {
  // tx.Text is of type textproto.Conn
  // the underlying connection is stored in tx.Conn
  l, err := tx.Text.Reader.ReadLine()

  // do stuff with the text line ...
}

Jetzt möchte ich die Verbindung auf TLS wie folgt aktualisieren (TlsConf enthält ein Zertifikat geladen mittls.LoadX509KeyPair)

tx.Conn = tls.Server(tx.Conn, tx.Server.Conf.TlsConf)
tx.Text = textproto.NewConn(tx.Conn)

Wenn ich dies tue, erhalte ich einen Segmentierungsfehler auf dem Client, wenn der Server einen Handshake versucht. Ich implementiere einen SMTP-Server und teste ihn mitswaks Verwendung der-tls Flagge. Die Terminalausgabe vonswaks ist das Folgende

-> STARTTLS
<-  220 Start TLS
Segmentation fault: 11

Da swaks ein getestetes Tool ist und mit der SMTP-Implementierung von nodeJS gearbeitet hat, vermute ich nicht, dass der Fehler auf der Clientseite liegt.

Was habe ich falsch gemacht oder was fehlt?

PS: Was passiert genau, wenn eine TLS-Verbindung von einer bestehenden unsicheren Verbindung aus gestartet wird? Baut der Client eine neue Verbindung an einem anderen Port auf oder wird die Verbindung erneut verwendet?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage