@@ -257,8 +257,13 @@ func (cli *Client) DownloadMediaWithPath(
257257 // TODO omit hash for unencrypted media?
258258 mediaURL := fmt .Sprintf ("https://%s%s&hash=%s&mms-type=%s&__wa-mms=" , host .Hostname , directPath , base64 .URLEncoding .EncodeToString (encFileHash ), mmsType )
259259 data , err = cli .downloadAndDecrypt (ctx , mediaURL , mediaKey , mediaType , fileLength , encFileHash , fileHash )
260- if err == nil || errors .Is (err , ErrFileLengthMismatch ) || errors .Is (err , ErrInvalidMediaSHA256 ) ||
261- errors .Is (err , ErrMediaDownloadFailedWith403 ) || errors .Is (err , ErrMediaDownloadFailedWith404 ) || errors .Is (err , ErrMediaDownloadFailedWith410 ) {
260+ if err == nil ||
261+ errors .Is (err , ErrFileLengthMismatch ) ||
262+ errors .Is (err , ErrInvalidMediaSHA256 ) ||
263+ errors .Is (err , ErrMediaDownloadFailedWith403 ) ||
264+ errors .Is (err , ErrMediaDownloadFailedWith404 ) ||
265+ errors .Is (err , ErrMediaDownloadFailedWith410 ) ||
266+ errors .Is (err , context .Canceled ) {
262267 return
263268 } else if i >= len (mediaConn .Hosts )- 1 {
264269 return nil , fmt .Errorf ("failed to download media from last host: %w" , err )
@@ -302,6 +307,9 @@ func getMediaKeys(mediaKey []byte, appInfo MediaType) (iv, cipherKey, macKey, re
302307}
303308
304309func shouldRetryMediaDownload (err error ) bool {
310+ if errors .Is (err , context .Canceled ) {
311+ return false
312+ }
305313 var netErr net.Error
306314 var httpErr DownloadHTTPError
307315 return errors .As (err , & netErr ) ||
0 commit comments