mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 00:20:25 +08:00 
			
		
		
		
	Only send webhook events to active system webhooks and only deliver to active hooks (#19234)
There is a bug in the system webhooks whereby the active state is not checked when webhooks are prepared and there is a bug that deactivating webhooks do not prevent queued deliveries. * Only add SystemWebhooks to the prepareWebhooks list if they are active * At the time of delivery if the underlying webhook is not active mark it as "delivered" but with a failed delivery so it does not get delivered. Fix #19220 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		@@ -498,14 +498,19 @@ func GetSystemOrDefaultWebhook(id int64) (*Webhook, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetSystemWebhooks returns all admin system webhooks.
 | 
			
		||||
func GetSystemWebhooks() ([]*Webhook, error) {
 | 
			
		||||
	return getSystemWebhooks(db.GetEngine(db.DefaultContext))
 | 
			
		||||
func GetSystemWebhooks(isActive util.OptionalBool) ([]*Webhook, error) {
 | 
			
		||||
	return getSystemWebhooks(db.GetEngine(db.DefaultContext), isActive)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getSystemWebhooks(e db.Engine) ([]*Webhook, error) {
 | 
			
		||||
func getSystemWebhooks(e db.Engine, isActive util.OptionalBool) ([]*Webhook, error) {
 | 
			
		||||
	webhooks := make([]*Webhook, 0, 5)
 | 
			
		||||
	if isActive.IsNone() {
 | 
			
		||||
		return webhooks, e.
 | 
			
		||||
			Where("repo_id=? AND org_id=? AND is_system_webhook=?", 0, 0, true).
 | 
			
		||||
			Find(&webhooks)
 | 
			
		||||
	}
 | 
			
		||||
	return webhooks, e.
 | 
			
		||||
		Where("repo_id=? AND org_id=? AND is_system_webhook=?", 0, 0, true).
 | 
			
		||||
		Where("repo_id=? AND org_id=? AND is_system_webhook=? AND is_active = ?", 0, 0, true, isActive.IsTrue()).
 | 
			
		||||
		Find(&webhooks)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user