]> 127.0.0.1 Git - part/.git/commitdiff
fix v0.27.17
authorqydysky <qydysky@foxmail.com>
Sun, 28 May 2023 09:19:13 +0000 (17:19 +0800)
committerqydysky <qydysky@foxmail.com>
Sun, 28 May 2023 09:19:13 +0000 (17:19 +0800)
file/FileWR.go

index 8959087589bbaddad5a5e28d982c3b74ea7be029..21570a0cabf659495d7e37dea67bcf29bbad9f2d 100644 (file)
@@ -9,8 +9,8 @@ import (
        "path/filepath"
        "strings"
        "sync"
+       "time"
 
-       l "github.com/qydysky/part/limit"
        encoder "golang.org/x/text/encoding"
 )
 
@@ -380,19 +380,29 @@ func newPath(path string, mode fs.FileMode) {
 
 func transferIO(r io.Reader, w io.Writer, byteInSec int64) (e error) {
        if byteInSec > 0 {
-               limit := l.New(1, "1s", "-1s")
-               defer limit.Close()
+               ticker := time.NewTicker(time.Second)
+               defer ticker.Stop()
 
                for buf := make([]byte, byteInSec); true; {
                        if n, err := r.Read(buf); n != 0 {
-                               w.Write(buf[:n])
+                               if _, werr := w.Write(buf[:n]); werr != nil {
+                                       return err
+                               }
                        } else if err != nil {
-                               return err
+                               if !errors.Is(err, io.EOF) {
+                                       return err
+                               } else {
+                                       return nil
+                               }
                        }
-                       limit.TO()
+                       <-ticker.C
                }
        } else if _, err := io.Copy(w, r); err != nil {
-               return err
+               if !errors.Is(err, io.EOF) {
+                       return err
+               } else {
+                       return nil
+               }
        }
        return nil
 }