Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit 10730cc86995db3d46ef6708328d8967e3f10484 Author: Jerry Heiselman <jheiselman@users.noreply.github.com> Date: Wed Dec 19 15:01:05 2018 +0000 Try downloading files again if slack is too slow (slack). Closes #655 (#656) diff --git a/bridge/slack/handlers.go b/bridge/slack/handlers.go index 40a9666..be3951e 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -2577 +2577 @@ func (b *Bslack) handleAttachments(ev *slack.MessageEvent, rmsg *config.Message)     // If we have files attached, download them (in memory) and put a pointer to it in msg.Extra.   for i := range ev.Files { - if err := b.handleDownloadFile(rmsg, &ev.Files[i]); err != nil { + if err := b.handleDownloadFile(rmsg, &ev.Files[i], false); err != nil {   b.Log.Errorf("Could not download incoming file: %#v", err)   }   } @@ -2767 +2767 @@ func (b *Bslack) handleTypingEvent(ev *slack.UserTypingEvent) (*config.Message,  }    // handleDownloadFile handles file download -func (b *Bslack) handleDownloadFile(rmsg *config.Message, file *slack.File) error { +func (b *Bslack) handleDownloadFile(rmsg *config.Message, file *slack.File, retry bool) error {   if b.fileCached(file) {   return nil   } @@ -2926 +29212 @@ func (b *Bslack) handleDownloadFile(rmsg *config.Message, file *slack.File) erro   return fmt.Errorf("download %s failed %#v", file.URLPrivateDownload, err)   }   + if len(*data) != file.Size && !retry { + b.Log.Debugf("Data size (%d) is not equal to size declared (%d)\n", len(*data), file.Size) + time.Sleep(1 * time.Second) + return b.handleDownloadFile(rmsg, file, true) + } +   // If a comment is attached to the file(s) it is in the 'Text' field of the Slack messge event   // and should be added as comment to only one of the files. We reset the 'Text' field to ensure   // that the comment is not duplicated.