如何使用FileConn传递和恢复TLS连接?

时间:2018-07-17 18:22:58

标签: ssl go tcp file-connection

我正在通过父进程传递标准的TCP连接:

cf, err = (*c.Conn.TCP).(*net.TCPConn).File()
if err != nil {
    log.Fatalf("failed to upgrade BNC: failed to retrieve file for client: %+v", err)
}
extraFiles = append(extraFiles, cf)
c.Conn.FD = cf.Fd()
noCloseOnExec(c.Conn.FD)

到子进程(c.Conn.FD == fdi):

connFile := os.NewFile(uintptr(fdi), "upgraded-gob-conn")
conn, err := net.FileConn(connFile)
if err != nil {
    panic(err)
}
err = connFile.Close()
if err != nil {
    panic(err)
}

这对于纯TCP连接非常有用。在尝试访问tls连接的File()时,我发现它的TCPConn没有公开。我有一个解决方法:始终使用纯TCP服务和连接,但在保留对原始TCP连接的引用的同时立即升级连接。我不确定这是否行得通。

非常感谢您的帮助。

0 个答案:

没有答案