This is an automated email from the ASF dual-hosted git repository. chibenwa pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-jspf.git
commit f38221ac5d0c556a7e67eef33d1ed59f079a7709 Author: Quan Tran <[email protected]> AuthorDate: Tue Nov 3 14:31:49 2026 +0700 [FIX] FallbackPolicy.removeEntry: remove the entry of the host removeEntry passed the record of the entry matching the host to Map.remove, which takes a key, so no entry was ever removed: an entry removed from SPF.getFallbackPolicy() or getOverridePolicy() still applied to the domains it names. Only clearEntrys() worked. Remove the entry of the host as addEntry stores it, so that removeEntry("*.example.com") removes the entry added for "*.example.com". --- .../james/jspf/policies/local/FallbackPolicy.java | 6 ++---- .../jspf/policies/local/FallbackPolicyTest.java | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/resolver/src/main/java/org/apache/james/jspf/policies/local/FallbackPolicy.java b/resolver/src/main/java/org/apache/james/jspf/policies/local/FallbackPolicy.java index a26db83..c08669d 100644 --- a/resolver/src/main/java/org/apache/james/jspf/policies/local/FallbackPolicy.java +++ b/resolver/src/main/java/org/apache/james/jspf/policies/local/FallbackPolicy.java @@ -158,13 +158,11 @@ public class FallbackPolicy implements PolicyPostFilter { * Remove entry * * @param host - * The host + * The host, as given to {@link #addEntry(String, String)} */ public void removeEntry(String host) { LOGGER.debug("Remove fallback entry for host: {}", host); - synchronized (entryMap) { - entryMap.remove(getRawEntry(host)); - } + entryMap.remove(normalize(host)); } /** diff --git a/resolver/src/test/java/org/apache/james/jspf/policies/local/FallbackPolicyTest.java b/resolver/src/test/java/org/apache/james/jspf/policies/local/FallbackPolicyTest.java index 1cd8644..5fdc6ce 100644 --- a/resolver/src/test/java/org/apache/james/jspf/policies/local/FallbackPolicyTest.java +++ b/resolver/src/test/java/org/apache/james/jspf/policies/local/FallbackPolicyTest.java @@ -179,4 +179,26 @@ public class FallbackPolicyTest { assertNotNull(policy.getSPFRecord("foo.example.com")); } + + @Test + public void removeEntryShouldRemoveTheEntry() throws Exception { + FallbackPolicy policy = new FallbackPolicy(PARSER); + policy.addEntry("example.com.", "v=spf1 +all"); + + policy.removeEntry("example.com."); + + assertNull(policy.getSPFRecord("example.com.", null)); + } + + @Test + public void removeEntryShouldRemoveAWildcardEntry() throws Exception { + FallbackPolicy policy = new FallbackPolicy(PARSER); + policy.addEntry("*.example.com", "v=spf1 +all"); + policy.addEntry("foo.example.com", "v=spf1 -all"); + + policy.removeEntry("*.example.com"); + + assertNull(policy.getSPFRecord("bar.example.com", null)); + assertNotNull(policy.getSPFRecord("foo.example.com", null)); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
