pgcli/download: fixed not receiving exit signal when conn timed out

This commit is contained in:
rkonfj
2024-06-06 20:39:19 +08:00
parent 26c1311a49
commit ddd2fd8d37

View File

@@ -91,13 +91,18 @@ func requestFile(ctx context.Context, pubnet pubnet.PublicNetwork, peerID string
if err != nil { if err != nil {
return fmt.Errorf("listen rdt: %w", err) return fmt.Errorf("listen rdt: %w", err)
} }
defer listener.Close()
conn, err := listener.OpenStream(peer.ID(peerID)) conn, err := listener.OpenStream(peer.ID(peerID))
if err != nil { if err != nil {
return fmt.Errorf("dial server failed: %w", err) return fmt.Errorf("dial server failed: %w", err)
} }
defer conn.Close() defer conn.Close()
go func() { // watch exit program event
<-ctx.Done()
conn.Write(buildClose())
conn.Close()
}()
f, err := os.Create(filename) f, err := os.Create(filename)
if err != nil { if err != nil {
return err return err
@@ -137,11 +142,6 @@ func requestFile(ctx context.Context, pubnet pubnet.PublicNetwork, peerID string
progressbar.OptionSpinnerType(14), progressbar.OptionSpinnerType(14),
progressbar.OptionSetRenderBlankState(true), progressbar.OptionSetRenderBlankState(true),
) )
go func() { // watch exit program event
<-ctx.Done()
conn.Write(buildClose())
conn.Close()
}()
defer conn.Write(buildClose()) defer conn.Write(buildClose())
sha256Checksum := sha256.New() sha256Checksum := sha256.New()