]> source.dussan.org Git - gitea.git/commitdiff
Fix deadlock in webhook PullRequest (#6102)
authorzeripath <art27@cantab.net>
Sun, 17 Feb 2019 21:12:39 +0000 (21:12 +0000)
committerGitHub <noreply@github.com>
Sun, 17 Feb 2019 21:12:39 +0000 (21:12 +0000)
Signed-off-by: Andrew Thornton <art27@cantab.net>
models/webhook_dingtalk.go
models/webhook_discord.go
models/webhook_slack.go

index dbbbebcd9a055bc0dd9a649f3a8171552eaf88d3..1021ab35f14e6ca244919c916840de917301beeb 100644 (file)
@@ -230,12 +230,13 @@ func getDingtalkPullRequestPayload(p *api.PullRequestPayload) (*DingtalkPayload,
                title = fmt.Sprintf("[%s] Pull request edited: #%d %s", p.Repository.FullName, p.Index, p.PullRequest.Title)
                text = p.PullRequest.Body
        case api.HookIssueAssigned:
-               list, err := MakeAssigneeList(&Issue{ID: p.PullRequest.ID})
-               if err != nil {
-                       return &DingtalkPayload{}, err
+               list := make([]string, len(p.PullRequest.Assignees))
+               for i, user := range p.PullRequest.Assignees {
+                       list[i] = user.UserName
                }
                title = fmt.Sprintf("[%s] Pull request assigned to %s: #%d %s", p.Repository.FullName,
-                       list, p.Index, p.PullRequest.Title)
+                       strings.Join(list, ", "),
+                       p.Index, p.PullRequest.Title)
                text = p.PullRequest.Body
        case api.HookIssueUnassigned:
                title = fmt.Sprintf("[%s] Pull request unassigned: #%d %s", p.Repository.FullName, p.Index, p.PullRequest.Title)
index 4011880ea9035894fd986b630ae203532f311219..893e78096593ca54f5006b68399b55bbd6e95abe 100644 (file)
@@ -347,12 +347,13 @@ func getDiscordPullRequestPayload(p *api.PullRequestPayload, meta *DiscordMeta)
                text = p.PullRequest.Body
                color = warnColor
        case api.HookIssueAssigned:
-               list, err := MakeAssigneeList(&Issue{ID: p.PullRequest.ID})
-               if err != nil {
-                       return &DiscordPayload{}, err
+               list := make([]string, len(p.PullRequest.Assignees))
+               for i, user := range p.PullRequest.Assignees {
+                       list[i] = user.UserName
                }
-               title = fmt.Sprintf("[%s] Pull request assigned to %s: #%d %s", p.Repository.FullName,
-                       list, p.Index, p.PullRequest.Title)
+               title = fmt.Sprintf("[%s] Pull request assigned to %s: #%d by %s", p.Repository.FullName,
+                       strings.Join(list, ", "),
+                       p.Index, p.PullRequest.Title)
                text = p.PullRequest.Body
                color = successColor
        case api.HookIssueUnassigned:
index 5c67951fba8262a604cd122926886d7bba85655e..90d5ccce0b7c1c867c39f0e24b7c476aeae13211 100644 (file)
@@ -301,12 +301,12 @@ func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (*S
                text = fmt.Sprintf("[%s] Pull request edited: %s by %s", p.Repository.FullName, titleLink, senderLink)
                attachmentText = SlackTextFormatter(p.PullRequest.Body)
        case api.HookIssueAssigned:
-               list, err := MakeAssigneeList(&Issue{ID: p.PullRequest.ID})
-               if err != nil {
-                       return &SlackPayload{}, err
+               list := make([]string, len(p.PullRequest.Assignees))
+               for i, user := range p.PullRequest.Assignees {
+                       list[i] = SlackLinkFormatter(setting.AppURL+user.UserName, user.UserName)
                }
                text = fmt.Sprintf("[%s] Pull request assigned to %s: %s by %s", p.Repository.FullName,
-                       SlackLinkFormatter(setting.AppURL+list, list),
+                       strings.Join(list, ", "),
                        titleLink, senderLink)
        case api.HookIssueUnassigned:
                text = fmt.Sprintf("[%s] Pull request unassigned: %s by %s", p.Repository.FullName, titleLink, senderLink)