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?