Suppress AddressFamilyError in link verification (#23204)
* Suppress AddressFamilyError * clarify commentgh/stable
parent
448be26b34
commit
f2a6e71bb6
|
@ -10,7 +10,7 @@ class VerifyLinkService < BaseService
|
||||||
return unless link_back_present?
|
return unless link_back_present?
|
||||||
|
|
||||||
field.mark_verified!
|
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}"
|
Rails.logger.debug "Error fetching link #{@url}: #{e}"
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
|
@ -150,5 +150,27 @@ RSpec.describe VerifyLinkService, type: :service do
|
||||||
expect(field.verified?).to be true
|
expect(field.verified?).to be true
|
||||||
end
|
end
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
Reference in New Issue