Webhook delivery locking & Hide repo for org members if they don't have access

This commit is contained in:
Unknwon
2014-10-09 19:01:22 -04:00
parent 7b03b1df0e
commit 79262173a6
4 changed files with 31 additions and 4 deletions

View File

@ -235,8 +235,22 @@ func UpdateHookTask(t *HookTask) error {
return err
}
var (
// Prevent duplicate deliveries.
// This happens with massive hook tasks cannot finish delivering
// before next shooting starts.
isShooting = false
)
// DeliverHooks checks and delivers undelivered hooks.
// FIXME: maybe can use goroutine to shoot a number of them at same time?
func DeliverHooks() {
if isShooting {
return
}
isShooting = true
defer func() { isShooting = false }()
tasks := make([]*HookTask, 0, 10)
timeout := time.Duration(setting.WebhookDeliverTimeout) * time.Second
x.Where("is_delivered=?", false).Iterate(new(HookTask),
@ -255,7 +269,7 @@ func DeliverHooks() {
t.IsDelivered = true
// TODO: record response.
// FIXME: record response.
switch t.Type {
case GOGS:
{