Repository navigation
Conversation
…w_list disposable? also checks the MX servers, so it does a DNS lookup. It ran before allow_listed?, so every address did the DNS lookup, also when the domain was on the allow list (for example gmail.com). Check allow_listed? first. Allow-listed addresses now skip the DNS lookup. The result does not change.
Collaborator
|
This is reasonable |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The problem
The check is
address.disposable? && !address.allow_listed?.disposable?also checks the MX servers, so it does a DNS lookup.Because
disposable?runs first, every address does this lookup. This includes allow-listed domains, for examplegmail.com.Why the order matters
Ruby stops an
&&check when the first part is false.If we check the allow list first, allow-listed addresses stop there. They do not get to the DNS lookup.
The change
Swap the order:
!address.allow_listed? && address.disposable?