From cd5ff73b9f1e2761fcdfbccd8969e8d4f6a25bf6 Mon Sep 17 00:00:00 2001 From: AmarnathCJD Date: Wed, 7 Aug 2024 01:39:23 +0530 Subject: [PATCH] minor test fixes. --- internal/transport/writer.go | 14 ++++++++++++++ telegram/client.go | 9 ++++++--- telegram/media.go | 13 +++++++++---- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/internal/transport/writer.go b/internal/transport/writer.go index fc4416c1..f05fc9f1 100755 --- a/internal/transport/writer.go +++ b/internal/transport/writer.go @@ -43,7 +43,21 @@ func (c *Reader) begin() { } } +func isClosed(ch <-chan int) bool { + select { + case <-ch: + return true + default: + } + + return false +} + func (c *Reader) Read(p []byte) (int, error) { + if isClosed(c.sizeWant) { + return 0, io.EOF + } + select { case <-c.ctx.Done(): return 0, c.ctx.Err() diff --git a/telegram/client.go b/telegram/client.go index 4f5fd67f..8d6d8639 100644 --- a/telegram/client.go +++ b/telegram/client.go @@ -27,7 +27,7 @@ import ( const ( // The Initial DC to connect to, before auth DefaultDataCenter = 4 - DisconnectExportedAfter = 5 * time.Minute + DisconnectExportedAfter = 15 * time.Minute ) type clientData struct { @@ -364,12 +364,15 @@ func (c *Client) loopForCleaningExpiredSenders() { for { time.Sleep(DisconnectExportedAfter) c.exportedSenders.Lock() - for i, s := range c.exportedSenders.senders { + newSenders := c.exportedSenders.senders[:0] + for _, s := range c.exportedSenders.senders { if time.Since(s.added) > DisconnectExportedAfter { s.client.Terminate() - c.exportedSenders.senders = append(c.exportedSenders.senders[:i], c.exportedSenders.senders[i+1:]...) + } else { + newSenders = append(newSenders, s) } } + c.exportedSenders.senders = newSenders c.exportedSenders.Unlock() } } diff --git a/telegram/media.go b/telegram/media.go index a8bba8c0..10b50fcb 100644 --- a/telegram/media.go +++ b/telegram/media.go @@ -355,6 +355,13 @@ func (mb *Destination) WriteAt(p []byte, off int64) (n int, err error) { return len(p), nil } +func (mb *Destination) Close() error { + if mb.file != nil { + return mb.file.Close() + } + return nil +} + func (c *Client) DownloadMedia(file interface{}, Opts ...*DownloadOptions) (string, error) { opts := getVariadic(Opts, &DownloadOptions{}) location, dc, size, fileName, err := GetFileLocation(file) @@ -381,12 +388,10 @@ func (c *Client) DownloadMedia(file interface{}, Opts ...*DownloadOptions) (stri } fs.file = file - - defer func() { - fs.file.Close() - }() } + defer fs.Close() + parts := size / int64(partSize) partOver := size % int64(partSize)