Index: httpclient/src/test/java/org/apache/http/impl/client/TestCookieIdentityComparator.java =================================================================== --- httpclient/src/test/java/org/apache/http/impl/client/TestCookieIdentityComparator.java (revision 792427) +++ httpclient/src/test/java/org/apache/http/impl/client/TestCookieIdentityComparator.java (working copy) @@ -116,4 +116,42 @@ assertTrue(comparator.compare(c3, c4) == 0); } + public void testCookieIdentityComparasionByNameDomainAndPath() { + CookieIdentityComparator comparator = new CookieIdentityComparator(); + BasicClientCookie c1 = new BasicClientCookie("name", "value1"); + c1.setDomain("www.domain.com"); + c1.setPath("/whatever"); + BasicClientCookie c2 = new BasicClientCookie("name", "value2"); + c2.setDomain("www.domain.com"); + c2.setPath("/whatever"); + assertTrue(comparator.compare(c1, c2) == 0); + + BasicClientCookie c3 = new BasicClientCookie("name", "value1"); + c3.setDomain("www.domain.com"); + c3.setPath("/whatever"); + BasicClientCookie c4 = new BasicClientCookie("name", "value2"); + c4.setDomain("domain.com"); + c4.setPath("/whatever-not"); + assertFalse(comparator.compare(c3, c4) == 0); + } + + public void testCookieIdentityComparasionByNameDomainAndNullPath() { + CookieIdentityComparator comparator = new CookieIdentityComparator(); + BasicClientCookie c1 = new BasicClientCookie("name", "value1"); + c1.setDomain("www.domain.com"); + c1.setPath("/"); + BasicClientCookie c2 = new BasicClientCookie("name", "value2"); + c2.setDomain("www.domain.com"); + c2.setPath(null); + assertTrue(comparator.compare(c1, c2) == 0); + + BasicClientCookie c3 = new BasicClientCookie("name", "value1"); + c3.setDomain("www.domain.com"); + c3.setPath("/whatever"); + BasicClientCookie c4 = new BasicClientCookie("name", "value2"); + c4.setDomain("domain.com"); + c4.setPath(null); + assertFalse(comparator.compare(c3, c4) == 0); + } + } Index: httpclient/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java =================================================================== --- httpclient/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java (revision 792427) +++ httpclient/src/main/java/org/apache/http/cookie/CookieIdentityComparator.java (working copy) @@ -67,6 +67,17 @@ } res = d1.compareToIgnoreCase(d2); } + if (res == 0) { + String p1 = c1.getPath(); + if (p1 == null) { + p1 = "/"; + } + String p2 = c2.getPath(); + if (p2 == null) { + p2 = "/"; + } + res = p1.compareTo(p2); + } return res; }