public boolean responseBelongsToUs(SIPResponse response) { Via topmostVia = response.getTopmostVia(); String branch = topmostVia.getBranch(); return branch != null && branch.startsWith( SIPConstants.BRANCH_MAGIC_COOKIE + "-" + this.signature); }
/** * Get entry in the server transaction pending ACK table corresponding to an * ACK. * * @param ackMessage * @return */ public SIPServerTransaction findTransactionPendingAck(SIPRequest ackMessage) { return this.terminatedServerTransactionsPendingAck.get(ackMessage .getTopmostVia().getBranch()); }
/** * Add entry to "Transaction Pending ACK" table. * * @param serverTransaction */ public void addTransactionPendingAck(SIPServerTransaction serverTransaction) { String branchId = ((SIPRequest) serverTransaction.getRequest()) .getTopmostVia().getBranch(); if ( branchId != null ) { this.terminatedServerTransactionsPendingAck.put(branchId, serverTransaction); } }
/** * Sets the Via branch for CANCEL or ACK requests * * @param via * @param method * @throws ParseException */ private final void setBranch(Via via, String method) { String branch; if (method.equals(Request.ACK)) { if (getLastResponseStatusCode().intValue() >= 300) { branch = lastResponseTopMostVia.getBranch(); // non-2xx ACK uses // same branch } else { branch = Utils.getInstance().generateBranchId(); // 2xx ACK gets // new branch } } else if (method.equals(Request.CANCEL)) { branch = lastResponseTopMostVia.getBranch(); // CANCEL uses same // branch } else return; try { via.setBranch(branch); } catch (ParseException e) { e.printStackTrace(); } }
public void addTransaction(SipServletRequestImpl request) { if(!request.getMethod().equalsIgnoreCase("ACK") && !request.getMethod().equalsIgnoreCase("PRACK")) { String branch = ((Via)request.getMessage().getHeader(Via.NAME)).getBranch(); if(this.ongoingTransactions.add(new TransactionRequest(branch, request))) { request.getTransactionApplicationData().setProxyBranch(this); if(logger.isDebugEnabled()) { logger.debug("Added transaction "+branch+" to proxy branch."); } } } }
/** * Check if this entry exists in the "Transaction Pending ACK" table. * * @param serverTransaction * @return */ public boolean isTransactionPendingAck( SIPServerTransaction serverTransaction) { String branchId = ((SIPRequest) serverTransaction.getRequest()) .getTopmostVia().getBranch(); return this.terminatedServerTransactionsPendingAck.contains(branchId); }
String branch = ((Via)proxiedResponse.getMessage().getHeader(Via.NAME)).getBranch(); synchronized(this.ongoingTransactions) { for(TransactionRequest tr : this.ongoingTransactions) {
String branch = ((Via)proxiedResponse.getMessage().getHeader(Via.NAME)).getBranch(); Transaction transaction = null; synchronized(proxyBranch.ongoingTransactions) {
logger.logDebug("newSIPServerRequest( " + requestReceived.getMethod() + ":" + requestReceived.getTopmostVia().getBranch() + "):" + currentTransaction);
if (sipRequest.getTopmostVia().getBranch() != null && sipRequest.getTopmostVia().getBranch().startsWith( SIPConstants.BRANCH_MAGIC_COOKIE) && sipStack.findTransaction((SIPRequest) sipRequest, false) != null) { if (sipRequest.getTopmostVia().getBranch() == null || !sipRequest.getTopmostVia().getBranch().startsWith( SIPConstants.BRANCH_MAGIC_COOKIE) || sipStack.checkBranchId() ) { branchId = sipRequest.getTopmostVia().getBranch();
String branch = via.getBranch(); if (branch == null || branch.length() == 0) { via.setBranch(sipRequest.getTransactionId());