about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-12-17 03:14:13 +0100
committerGitHub <noreply@github.com>2018-12-17 03:14:13 +0100
commit628da11e38b0580a074268f32d09791ed6278def (patch)
tree757ecff88ba7fed80bdd1f2acf6a1a40c460dfff
parent4297de34cfe705622d53d9688c1ad9abb24ced76 (diff)
Do no retry web push workers if the server returns a 4xx response (#9434)
Add timeout of 10s to web push requests
-rw-r--r--app/models/web/push_subscription.rb3
-rw-r--r--app/workers/web/push_notification_worker.rb4
2 files changed, 5 insertions, 2 deletions
diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb
index d19b20c48..b57807d1c 100644
--- a/app/models/web/push_subscription.rb
+++ b/app/models/web/push_subscription.rb
@@ -68,6 +68,9 @@ class Web::PushSubscription < ApplicationRecord
       p256dh: key_p256dh,
       auth: key_auth,
       ttl: ttl,
+      ssl_timeout: 10,
+      open_timeout: 10,
+      read_timeout: 10,
       vapid: {
         subject: "mailto:#{::Setting.site_contact_email}",
         private_key: Rails.configuration.x.vapid_private_key,
diff --git a/app/workers/web/push_notification_worker.rb b/app/workers/web/push_notification_worker.rb
index 4a40e5c8b..8e8a35973 100644
--- a/app/workers/web/push_notification_worker.rb
+++ b/app/workers/web/push_notification_worker.rb
@@ -10,8 +10,8 @@ class Web::PushNotificationWorker
     notification = Notification.find(notification_id)
 
     subscription.push(notification) unless notification.activity.nil?
-  rescue Webpush::InvalidSubscription, Webpush::ExpiredSubscription
-    subscription.destroy!
+  rescue Webpush::ResponseError => e
+    subscription.destroy! if (400..499).cover?(e.response.code.to_i)
   rescue ActiveRecord::RecordNotFound
     true
   end