Another good catch! The port mapping ports also have to be checked in a similar manner
-- Afkham Azeez Sent from my phone On Apr 20, 2013 7:47 AM, "Nirmal Fernando" <[email protected]> wrote: > Hi All, > > While looking into solve an issue, I saw another possible bug in Tribes' > DefaultGroupManagement class. > > Currently, its canConnect method has following code portion: > > ============================================================ > > InetAddress addr = > InetAddress.getByName(member.getHostName()); > int httpPort = member.getHttpPort(); > if (log.isDebugEnabled()) { > log.debug("HTTP Port=" + httpPort); > } > if (httpPort != -1) { > SocketAddress httpSockaddr = new > InetSocketAddress(addr, httpPort); > new Socket().connect(httpSockaddr, 10000); > } > int httpsPort = member.getHttpsPort(); > if (log.isDebugEnabled()) { > log.debug("HTTPS Port=" + httpsPort); > } > if (httpsPort != -1) { > SocketAddress httpsSockaddr = new > InetSocketAddress(addr, httpsPort); > new Socket().connect(httpsSockaddr, 10000); > } > return true; > ============================================================= > > So, according to this code, if a member (for some reason) advertises both > http and https ports as -1, DefaultGroupManagement won't complain anything, > rather happily says that the member is reachable. > > IMO, this is a bug. It's a fair thing to say, if at least there's a one > valid port, and that port is connectable, the member is reachable, but not > if the both ports advertised are invalid. > > So I'd propose to add following code segment to fix the issue. > > ============================================================ > > InetAddress addr = > InetAddress.getByName(member.getHostName()); > int httpPort = member.getHttpPort(); > if (log.isDebugEnabled()) { > log.debug("HTTP Port=" + httpPort); > } > if(httpPort == -1 && httpsPort == -1){ > // none of the ports are valid > return false; > } > if (httpPort != -1) { > SocketAddress httpSockaddr = new > InetSocketAddress(addr, httpPort); > new Socket().connect(httpSockaddr, 10000); > } > int httpsPort = member.getHttpsPort(); > if (log.isDebugEnabled()) { > log.debug("HTTPS Port=" + httpsPort); > } > if (httpsPort != -1) { > SocketAddress httpsSockaddr = new > InetSocketAddress(addr, httpsPort); > new Socket().connect(httpsSockaddr, 10000); > } > return true; > =========================================================== > > Any concerns? > > -- > > Thanks & regards, > Nirmal > > Software Engineer- Platform Technologies Team, WSO2 Inc. > Mobile: +94715779733 > Blog: http://nirmalfdo.blogspot.com/ > > <http://nirmalfdo.blogspot.com/> >
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
