Actualizar una conexión a TLS en Go

Tengo una conexión TCP abierta y leo con un bucle for así.

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 ...
}

Ahora quiero actualizar la conexión a TLS de esta manera (TlsConf contiene un certificado cargado contls.LoadX509KeyPair)

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

Cuando hago esto, obtengo un error de segmentación en el cliente cuando el servidor intenta un protocolo de enlace. Estoy implementando un servidor SMTP y lo estoy probando conswaks utilizando la-tls bandera. La salida terminal deswaks es el siguiente

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

Ya que swaks es una herramienta probada y funcionó con la implementación SMTP de nodeJS que tuve antes, no sospecho que el error esté en el lado del cliente.

¿Qué hice mal o lo que falta?

PD: cuando se inicia una conexión TLS desde una conexión insegura existente, ¿qué sucede exactamente? ¿El cliente establece una nueva conexión en un puerto diferente o se reutiliza la conexión?

Respuestas a la pregunta(2)

Su respuesta a la pregunta