1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

Merge pull request #6634 from marc1706/ticket/17330

[ticket/17330] Handle mozilla not properly handling webpush padding
This commit is contained in:
Marc Alexander
2024-06-07 20:09:02 +02:00
committed by GitHub
2 changed files with 68 additions and 0 deletions

View File

@@ -48,6 +48,9 @@ class webpush extends messenger_base implements extended_method_interface
/** @var string Notification push subscriptions table */
protected $push_subscriptions_table;
/** @var int Fallback size for padding if endpoint is mozilla, see https://github.com/web-push-libs/web-push-php/issues/108#issuecomment-2133477054 */
const MOZILLA_FALLBACK_PADDING = 2820;
/**
* Notification Method Web Push constructor
*
@@ -218,6 +221,7 @@ class webpush extends messenger_base implements extended_method_interface
{
try
{
$this->set_endpoint_padding($web_push, $subscription['endpoint']);
$push_subscription = Subscription::create([
'endpoint' => $subscription['endpoint'],
'keys' => [
@@ -430,4 +434,27 @@ class webpush extends messenger_base implements extended_method_interface
$this->remove_subscriptions($remove_subscriptions);
}
/**
* Set web push padding for endpoint
*
* @param \Minishlink\WebPush\WebPush $web_push
* @param string $endpoint
*
* @return void
*/
protected function set_endpoint_padding(\Minishlink\WebPush\WebPush $web_push, string $endpoint): void
{
if (str_contains($endpoint, 'mozilla.com') || str_contains($endpoint, 'mozaws.net'))
{
try
{
$web_push->setAutomaticPadding(self::MOZILLA_FALLBACK_PADDING);
}
catch (\Exception)
{
// This shouldn't happen since we won't pass padding length outside limits
}
}
}
}