mirror of
https://github.com/discourse/discourse.git
synced 2025-02-23 05:28:40 +08:00

We're seeing unhandled errors in production when web push notifications are failing with an SSL error. This is happening for a few users, but generating a large amount of log noise due to the sheer number of notifications. This adds handling of SSL errors in two places: 1. In FinalDestination::HTTP, this is handled the same as a timeout error, and gives a chance to recover. 2. In PushNotificationPusher. This will cause the notification to retry a number of times, and if it keeps failing, disable push notifications for the user. (Existing behaviour.) I wanted to wrap the SSL error in e.g. WebPush::RequestError, but the gem doesn't have request error handling, so didn't want to have the freedom patch diverge from the gem as well. Instead just propagating the raw SSL error.