Browse Source

Suppress AddressFamilyError in link verification (#23204)

* Suppress AddressFamilyError

* clarify comment
closed-social-glitch-2
Markus Unterwaditzer 1 year ago
committed by GitHub
parent
commit
f2a6e71bb6
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 1 deletions
  1. +1
    -1
      app/services/verify_link_service.rb
  2. +22
    -0
      spec/services/verify_link_service_spec.rb

+ 1
- 1
app/services/verify_link_service.rb View File

@ -10,7 +10,7 @@ class VerifyLinkService < BaseService
return unless link_back_present?
field.mark_verified!
rescue OpenSSL::SSL::SSLError, HTTP::Error, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError => e
rescue OpenSSL::SSL::SSLError, HTTP::Error, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, IPAddr::AddressFamilyError => e
Rails.logger.debug "Error fetching link #{@url}: #{e}"
nil
end

+ 22
- 0
spec/services/verify_link_service_spec.rb View File

@ -150,5 +150,27 @@ RSpec.describe VerifyLinkService, type: :service do
expect(field.verified?).to be true
end
end
context 'when the link contains a link with a missing protocol slash' do
# This was seen in the wild where a user had three pages:
# 1. their mastodon profile, which linked to github and the personal website
# 2. their personal website correctly linking back to mastodon
# 3. a github profile that was linking to the personal website, but with
# a malformed protocol of http:/
#
# This caused link verification between the mastodon profile and the
# website to fail.
#
# apparently github allows the user to enter website URLs with a single
# slash and makes no attempts to correct that.
let(:html) { '<a href="http:/unrelated.example">Hello</a>' }
it 'does not crash' do
# We could probably put more effort into perhaps auto-correcting the
# link and following it anyway, but at the very least we shouldn't let
# exceptions bubble up
expect(field.verified?).to be false
end
end
end
end

Loading…
Cancel
Save