// ---------------------------------------------------------------------- public IMServerSession getRemoteSessionWaitForValidation(String hostname, long timeout) throws Exception { IMServerSession session = null; S2SConnector s2s = null; synchronized (hostnameAndS2SMap) { s2s = (S2SConnector) hostnameAndS2SMap.get(hostname); if (s2s != null && !s2s.getSession().isClosed()) { session = s2s.getSession(); } else { s2s = getS2SConnector(hostname); session = s2s.getSession(); } } synchronized (session) { // wait for validation if (!session.getDialbackValid()) { s2s.sendResult(); defaultNeximLogger.info("Wait validation for " + hostname + " for session " + session); session.wait(timeout); } } if (!session.getDialbackValid()) { throw new Exception( "Unable to get dialback validation for " + hostname + " after timeout " + timeout + " ms"); } defaultNeximLogger.info("Validation granted from " + hostname + " for session " + session); return session; } // getremote session