public void run() { if (SMPPSim.isCallback()) { synchronized (mutex) { boolean connected = false; Socket callback; while (!connected) { try { callback = new Socket(SMPPSim.getCallback_target_host(), SMPPSim.getCallback_port()); connected = true; smsc.setCallback(callback); smsc.setCallback_stream(callback.getOutputStream()); smsc.setCallback_server_online(true); logger.info("Connected to callback server"); } catch (Exception ce) { try { logger.info("Callback server not accepting connections - retrying"); Thread.sleep(1000); } catch (InterruptedException ie) { } } } mutex.notifyAll(); } } }