public static void stopSipStack(SipStack sipStack, SipListener listener) { Iterator<SipProvider> sipProviderIterator = sipStack.getSipProviders(); try { while (sipProviderIterator.hasNext()) { SipProvider sipProvider = sipProviderIterator.next(); ListeningPoint[] listeningPoints = sipProvider.getListeningPoints(); for (ListeningPoint listeningPoint : listeningPoints) { sipProvider.removeListeningPoint(listeningPoint); sipStack.deleteListeningPoint(listeningPoint); listeningPoints = sipProvider.getListeningPoints(); } sipProvider.removeSipListener(listener); sipStack.deleteSipProvider(sipProvider); sipProviderIterator = sipStack.getSipProviders(); } } catch (Exception e) { throw new IllegalStateException("Cant remove the listening points or sip providers", e); } sipStack.stop(); sipStack = null; }