From 4c66f6b29eda2d459aed86f7a138438191de7e47 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 18 十月 2022 17:35:32 +0800 Subject: [PATCH] 优化消息处理中存在可能异常的处理流程 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java index c12d0df..8c6ab99 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java @@ -7,6 +7,7 @@ import gov.nist.javax.sip.message.SIPRequest; import gov.nist.javax.sip.message.SIPResponse; import gov.nist.javax.sip.stack.SIPServerTransaction; +import gov.nist.javax.sip.stack.SIPServerTransactionImpl; import org.apache.commons.lang3.ArrayUtils; import org.dom4j.Document; import org.dom4j.DocumentException; @@ -57,7 +58,7 @@ */ public ServerTransaction getServerTransaction(RequestEvent evt) { Request request = evt.getRequest(); - ServerTransaction serverTransaction = evt.getServerTransaction(); + SIPServerTransactionImpl serverTransaction = (SIPServerTransactionImpl)evt.getServerTransaction(); // 鍒ゆ柇TCP杩樻槸UDP boolean isTcp = false; ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); @@ -65,28 +66,28 @@ if (transport.equalsIgnoreCase("TCP")) { isTcp = true; } - + if (serverTransaction != null && serverTransaction.getOriginalRequest() == null) { + serverTransaction.setOriginalRequest((SIPRequest) evt.getRequest()); + } if (serverTransaction == null) { try { if (isTcp) { SipStackImpl stack = (SipStackImpl)tcpSipProvider.getSipStack(); - serverTransaction = (SIPServerTransaction) stack.findTransaction((SIPRequest)request, true); + serverTransaction = (SIPServerTransactionImpl) stack.findTransaction((SIPRequest)request, true); if (serverTransaction == null) { - serverTransaction = tcpSipProvider.getNewServerTransaction(request); + serverTransaction = (SIPServerTransactionImpl)tcpSipProvider.getNewServerTransaction(request); } } else { SipStackImpl stack = (SipStackImpl)udpSipProvider.getSipStack(); - serverTransaction = (SIPServerTransaction) stack.findTransaction((SIPRequest)request, true); + serverTransaction = (SIPServerTransactionImpl) stack.findTransaction((SIPRequest)request, true); if (serverTransaction == null) { - serverTransaction = udpSipProvider.getNewServerTransaction(request); + serverTransaction = (SIPServerTransactionImpl)udpSipProvider.getNewServerTransaction(request); } } } catch (TransactionAlreadyExistsException e) { logger.error(e.getMessage()); } catch (TransactionUnavailableException e) { logger.error(e.getMessage()); - }finally { - } } return serverTransaction; -- Gitblit v1.8.0