]
Bela Ban commented on JGRP-591:
-------------------------------
I don't understand what you mean. The code below shows clearly that - although addr
and addr2 have the same hashcode - they will still get differentiated by compareTo(). You
can see that I have 2 entries in the hashmap at the end, not 1. This clearly shows that
addr1 and addr have correct hashCode() and equals() (compareTo()) implementations
IpAddress.hashCode() not unique per ip/port
-------------------------------------------
Key: JGRP-591
URL:
http://jira.jboss.com/jira/browse/JGRP-591
Project: JGroups
Issue Type: Bug
Affects Versions: 2.4.1 SP4
Environment: windows xp sp2, jdk 1.6 update 2
Reporter: robert chou
Assigned To: Bela Ban
Fix For: 2.6, 2.5.1, 2.4.1 SP5
Current implementation produces hashcode where ip/port combos "1.2.3.4:2" and
"1.2.3.5:1" result in the same hash code.
Existing code:
public final int hashCode() {
return ip_addr != null ? ip_addr.hashCode() + port : port;
}
Manual test code:
InetAddress ip1 = InetAddress.getByAddress( new byte[] {1,2,3,4} );
int port1 = 2;
int hash1 = ip1.hashCode() + port1;
System.out.println( "hash1 = " + hash1 );
InetAddress ip2 = InetAddress.getByAddress( new byte[] {1,2,3,5} );
int port2 = 1;
int hash2 = ip2.hashCode() + port2;
System.out.println( "hash2 = " + hash2 );
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: