From 7003e50a416b46126ce6fcb5ef8371e4ef1fd51d Mon Sep 17 00:00:00 2001 From: "borja (aider)" Date: Thu, 27 Mar 2025 17:24:44 +0100 Subject: [PATCH] fix: improve webhook verification with retries and better error handling --- src/server.ts | 11 +++++++++-- src/services/webhook-manager.ts | 14 +++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/server.ts b/src/server.ts index f9f560b..0ac6fae 100644 --- a/src/server.ts +++ b/src/server.ts @@ -121,10 +121,17 @@ export class WebhookServer { if (process.env.NODE_ENV !== 'test') { try { await WebhookManager.registerWebhook(); + // Add small delay to allow webhook to propagate + await new Promise(resolve => setTimeout(resolve, 1000)); const isActive = await WebhookManager.verifyWebhook(); if (!isActive) { - console.error('❌ Webhook verification failed'); - process.exit(1); + console.error('❌ Webhook verification failed - retrying in 2 seconds...'); + await new Promise(resolve => setTimeout(resolve, 2000)); + const isActiveRetry = await WebhookManager.verifyWebhook(); + if (!isActiveRetry) { + console.error('❌ Webhook verification failed after retry'); + process.exit(1); + } } } catch (error) { console.error('❌ Failed to setup webhook:', error instanceof Error ? error.message : error); diff --git a/src/services/webhook-manager.ts b/src/services/webhook-manager.ts index 49824fd..e27fd71 100644 --- a/src/services/webhook-manager.ts +++ b/src/services/webhook-manager.ts @@ -130,11 +130,19 @@ export class WebhookManager { headers: this.getHeaders(), }); - if (!response.ok) return false; + if (!response.ok) { + console.error('Webhook verification failed:', response.status, response.statusText); + return false; + } const data = await response.json(); - return data?.webhook?.enabled === true; - } catch { + const isEnabled = data?.enabled === true; + if (!isEnabled) { + console.error('Webhook not enabled in verification response:', data); + } + return isEnabled; + } catch (error) { + console.error('Webhook verification error:', error instanceof Error ? error.message : error); return false; } }