我有一个打开的 TCP 连接,并使用这样的 for 循环从中读取
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 ...
}
现在我想像这样升级到 TLS 的连接(TlsConf
包含加载的证书tls.LoadX509KeyPair
)
tx.Conn = tls.Server(tx.Conn, tx.Server.Conf.TlsConf)
tx.Text = textproto.NewConn(tx.Conn)
当我这样做时,当服务器尝试握手时,客户端出现分段错误。我正在实现一个 SMTP 服务器,并正在使用该标志使用swaks对其进行测试。swaks-tls
的终端输出如下
-> STARTTLS
<- 220 Start TLS
Segmentation fault: 11
由于 swaks 是一个经过测试的工具,并且与我之前的 nodeJS SMTP 实现一起使用,我不怀疑错误出在客户端。
我做错了什么或缺少什么?
PS:当从现有的不安全连接启动 TLS 连接时,究竟会发生什么?客户端是在不同的端口上建立新连接还是重用连接?