Как я могу передать и возобновить соединение TLS, используя FileConn?
Я передаю стандартное 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. При попытке доступа к File() tls-соединения я обнаружил, что его TCPConn не выставлен. У меня есть идея обходного пути: всегда обслуживайте и подключайтесь, используя обычный TCP, но обновляйте соединение немедленно, сохраняя при этом ссылку на исходное соединение TCP. Я не уверен, сработает ли это.
Любая помощь с благодарностью.