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]

Reply via email to