Exemple #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);
 }
 private SipRequest getInviteWithAuth(String callId) {
   List<ClientTransaction> clientTransactions =
       transactionManager.getClientTransactionsFromCallId(callId, RFC3261.METHOD_INVITE);
   SipRequest sipRequestNoAuth = null;
   for (ClientTransaction clientTransaction : clientTransactions) {
     InviteClientTransaction inviteClientTransaction = (InviteClientTransaction) clientTransaction;
     SipRequest sipRequest = inviteClientTransaction.getRequest();
     SipHeaders sipHeaders = sipRequest.getSipHeaders();
     SipHeaderFieldName authorization = new SipHeaderFieldName(RFC3261.HDR_AUTHORIZATION);
     SipHeaderFieldValue value = sipHeaders.get(authorization);
     if (value == null) {
       SipHeaderFieldName proxyAuthorization =
           new SipHeaderFieldName(RFC3261.HDR_PROXY_AUTHORIZATION);
       value = sipHeaders.get(proxyAuthorization);
     }
     if (value != null) {
       return sipRequest;
     }
     sipRequestNoAuth = sipRequest;
   }
   return sipRequestNoAuth;
 }