public void unregister() throws SipUriSyntaxException { if (getInitialRequestManager().getRegisterHandler().isRegistered()) { String requestUri = RFC3261.SIP_SCHEME + RFC3261.SCHEME_SEPARATOR + userAgent.getDomain(); MessageInterceptor messageInterceptor = new MessageInterceptor() { @Override public void postProcess(SipMessage sipMessage) { initialRequestManager.registerHandler.unregister(); SipHeaders sipHeaders = sipMessage.getSipHeaders(); SipHeaderFieldValue contact = sipHeaders.get(new SipHeaderFieldName(RFC3261.HDR_CONTACT)); contact.addParam(new SipHeaderParamName(RFC3261.PARAM_EXPIRES), "0"); } }; initialRequestManager.createInitialRequest( requestUri, RFC3261.METHOD_REGISTER, profileUri, registerCallID, null, messageInterceptor); // initialRequestManager.registerHandler.unregister(); } }
/** * For the moment we consider that only one profile uri is used at a time. * * @throws SipUriSyntaxException */ public SipRequest register() throws SipUriSyntaxException { String domain = userAgent.getDomain(); String requestUri = RFC3261.SIP_SCHEME + RFC3261.SCHEME_SEPARATOR + domain; SipListener sipListener = userAgent.getSipListener(); profileUri = RFC3261.SIP_SCHEME + RFC3261.SCHEME_SEPARATOR + userAgent.getUserpart() + RFC3261.AT + domain; registerCallID = Utils.generateCallID(userAgent.getConfig().getLocalInetAddress()); SipRequest sipRequest = initialRequestManager.createInitialRequest( requestUri, RFC3261.METHOD_REGISTER, profileUri, registerCallID); if (sipListener != null) { sipListener.registering(sipRequest); } return sipRequest; }
/** should be instanciated only once, it was a singleton. */ public UAC( UserAgent userAgent, InitialRequestManager initialRequestManager, MidDialogRequestManager midDialogRequestManager, DialogManager dialogManager, TransactionManager transactionManager, TransportManager transportManager, Logger logger) { this.userAgent = userAgent; this.initialRequestManager = initialRequestManager; this.midDialogRequestManager = midDialogRequestManager; this.dialogManager = dialogManager; this.transactionManager = transactionManager; this.logger = logger; guiClosedCallIds = Collections.synchronizedList(new ArrayList<String>()); profileUri = RFC3261.SIP_SCHEME + RFC3261.SCHEME_SEPARATOR + userAgent.getUserpart() + RFC3261.AT + userAgent.getDomain(); }