X-Git-Url: http://www.git.cypherpunks.ru/?p=ucspi.git;a=blobdiff_plain;f=cmd%2Ftlsc%2Fmain.go;h=2d130b1702684233ad53f29367e179b95eab963c;hp=80813b48527b69537c957b6818803bb16ab3af3a;hb=f519c4e470d63240c045c27951df3ed9de0471e9;hpb=92364d4e6d98a38edb92b7be377bc7ceae228c21 diff --git a/cmd/tlsc/main.go b/cmd/tlsc/main.go index 80813b4..2d130b1 100644 --- a/cmd/tlsc/main.go +++ b/cmd/tlsc/main.go @@ -1,6 +1,6 @@ /* ucspi/cmd/tlsc -- UCSPI TLS client -Copyright (C) 2021 Sergey Matveev +Copyright (C) 2021-2022 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -82,7 +82,7 @@ func main() { } if *casPath != "" { var err error - cfg.RootCAs, err = ucspi.CertPoolFromFile(*casPath) + _, cfg.RootCAs, err = ucspi.CertPoolFromFile(*casPath) if err != nil { log.Fatalln(err) } @@ -102,12 +102,9 @@ func main() { } } - conn := &ucspi.Conn{R: os.NewFile(6, "R"), W: os.NewFile(7, "W")} - if conn.R == nil { - log.Fatalln("no 6 file descriptor") - } - if conn.W == nil { - log.Fatalln("no 7 file descriptor") + conn, err := ucspi.NewConn(os.NewFile(6, "R"), os.NewFile(7, "W")) + if err != nil { + log.Fatalln(err) } tlsConn := tls.Client(conn, cfg) if err := tlsConn.Handshake(); err != nil { @@ -154,17 +151,18 @@ func main() { if err = cmd.Start(); err != nil { log.Fatalln(err) } - copiers := make(chan struct{}) + worker := make(chan struct{}) go func() { io.Copy(rw, tlsConn) rw.Close() - close(copiers) + close(worker) }() go func() { io.Copy(tlsConn, wr) }() _, err = cmd.Process.Wait() - <-copiers + <-worker + tlsConn.Close() if err != nil { log.Fatalln(err) }