|
|
@@ -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: |
|
|
|
{ |
|
|
|