summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2019-02-17 21:12:39 +0000
committerGitHub <noreply@github.com>2019-02-17 21:12:39 +0000
commit11e316654e523bd668a20e1e6a95da3f5b9b22de (patch)
tree2b5aa52929ccb9052127893e37967c3187adcf67
parent8d3bb86e20102c52427befa9cb035c2162d9e7da (diff)
downloadgitea-11e316654e523bd668a20e1e6a95da3f5b9b22de.tar.gz
gitea-11e316654e523bd668a20e1e6a95da3f5b9b22de.zip
Fix deadlock in webhook PullRequest (#6102)
Signed-off-by: Andrew Thornton <art27@cantab.net>
-rw-r--r--models/webhook_dingtalk.go9
-rw-r--r--models/webhook_discord.go11
-rw-r--r--models/webhook_slack.go8
3 files changed, 15 insertions, 13 deletions
diff --git a/models/webhook_dingtalk.go b/models/webhook_dingtalk.go
index dbbbebcd9a..1021ab35f1 100644
--- a/models/webhook_dingtalk.go
+++ b/models/webhook_dingtalk.go
@@ -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)
diff --git a/models/webhook_discord.go b/models/webhook_discord.go
index 4011880ea9..893e780965 100644
--- a/models/webhook_discord.go
+++ b/models/webhook_discord.go
@@ -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:
diff --git a/models/webhook_slack.go b/models/webhook_slack.go
index 5c67951fba..90d5ccce0b 100644
--- a/models/webhook_slack.go
+++ b/models/webhook_slack.go
@@ -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)