Atualizar uma conexão para o TLS no Go

Eu tenho uma conexão TCP aberta e ler a partir dele com um loop for como assim

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

Agora eu quero atualizar a conexão para o TLS assim (TlsConf contém um certificado carregado comtls.LoadX509KeyPair)

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

Quando faço isso, recebo uma falha de segmentação no cliente quando o servidor tenta um handshake. Estou implementando um servidor SMTP e estou testando comswaks usando o-tls bandeira. A saída terminal deswaks é o seguinte

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

Como o swaks é uma ferramenta testada e trabalhou com a implementação SMTP nodeJS que eu tinha antes, não suspeito que o erro esteja no lado do cliente.

O que fiz de errado ou o que está faltando?

PS: Quando uma conexão TLS é iniciada a partir de uma conexão insegura existente, o que exatamente acontece? O cliente estabelece uma nova conexão em uma porta diferente ou a conexão é reutilizada?

questionAnswers(2)

yourAnswerToTheQuestion