Пример #1
0
 public void errResponseReceived(final SipResponse sipResponse) {
   Dialog dialog = dialogManager.getDialog(sipResponse);
   if (dialog != null) {
     dialog.receivedOrSent300To699();
     dialogManager.removeDialog(dialog.getId());
   }
   int statusCode = sipResponse.getStatusCode();
   if (statusCode == RFC3261.CODE_401_UNAUTHORIZED
       || statusCode == RFC3261.CODE_407_PROXY_AUTHENTICATION_REQUIRED && !challenged) {
     InviteClientTransaction inviteClientTransaction =
         (InviteClientTransaction) transactionManager.getClientTransaction(sipResponse);
     SipRequest sipRequest = inviteClientTransaction.getRequest();
     String password = userAgent.getConfig().getPassword();
     if (password != null && !"".equals(password.trim())) {
       challengeManager.handleChallenge(sipRequest, sipResponse);
     }
     challenged = true;
     return;
   } else {
     challenged = false;
   }
   SipListener sipListener = userAgent.getSipListener();
   if (sipListener != null) {
     sipListener.error(sipResponse);
   }
   List<String> guiClosedCallIds = userAgent.getUac().getGuiClosedCallIds();
   String callId = Utils.getMessageCallId(sipResponse);
   if (guiClosedCallIds.contains(callId)) {
     guiClosedCallIds.remove(callId);
   }
   userAgent.getMediaManager().setDatagramSocket(null);
 }