diff --git a/src/cleanup.go b/src/cleanup.go index b4d8cb88..9c1fa58f 100644 --- a/src/cleanup.go +++ b/src/cleanup.go @@ -8,8 +8,10 @@ import ( func (c *Croc) cleanup() { c.cleanupTime = true - time.Sleep(250 * time.Millisecond) // race condition, wait for - // sending/receiving to finish + if !c.normalFinish { + time.Sleep(1000 * time.Millisecond) // race condition, wait for + // sending/receiving to finish + } // erase all the croc files and their possible numbers for i := 0; i < 16; i++ { fname := c.crocFile + "." + strconv.Itoa(i) diff --git a/src/client.go b/src/client.go index 1219d7a0..dd897544 100644 --- a/src/client.go +++ b/src/client.go @@ -503,6 +503,7 @@ func (c *Croc) dialUp() (err error) { c.cs.channel.transferTime = time.Since(c.cs.channel.startTransfer) c.cs.Unlock() log.Debug("leaving dialup") + c.normalFinish = true return } diff --git a/src/models.go b/src/models.go index cea06f88..7efa8780 100644 --- a/src/models.go +++ b/src/models.go @@ -60,7 +60,8 @@ type Croc struct { // bothConnected bothConnected bool // cleanupTime tells processes to close up - cleanupTime bool + cleanupTime bool + normalFinish bool } // Init will initialize the croc relay diff --git a/src/utils.go b/src/utils.go index ce15210c..d34949d0 100644 --- a/src/utils.go +++ b/src/utils.go @@ -32,6 +32,7 @@ func catFiles(files []string, outfile string, remove bool) error { } _, err = io.Copy(finished, fh) if err != nil { + fh.Close() return errors.Wrap(err, "CatFiles copy: ") } fh.Close()