From f6320c7dd3dfd25e98bb63f41d79a33af5009a93 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 17 十月 2022 17:02:16 +0800
Subject: [PATCH] 合并主线

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java |   30 +++++++++++++++++-------------
 1 files changed, 17 insertions(+), 13 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 57945e7..c61e2c1 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
@@ -1,12 +1,13 @@
 package com.genersoft.iot.vmp.gb28181.transmit.event.request;
 
+import com.genersoft.iot.vmp.conf.SipConfig;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
 import gov.nist.javax.sip.SipProviderImpl;
 import gov.nist.javax.sip.SipStackImpl;
 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;
@@ -26,8 +27,6 @@
 import javax.sip.message.Request;
 import javax.sip.message.Response;
 import java.io.ByteArrayInputStream;
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -50,6 +49,9 @@
 	@Qualifier(value="udpSipProvider")
 	private SipProviderImpl udpSipProvider;
 
+	@Autowired
+	private SipConfig sipConfig;
+
 	/**
 	 * 鏍规嵁 RequestEvent 鑾峰彇 ServerTransaction
 	 * @param evt
@@ -57,33 +59,36 @@
 	 */
 	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);
 		String transport = reqViaHeader.getTransport();
-		boolean isTcp = "TCP".equals(transport);
-
+		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;
@@ -185,7 +190,6 @@
 	 * 鍥炲甯dp鐨�200
 	 */
 	public SIPResponse responseSdpAck(ServerTransaction serverTransaction, String sdp, ParentPlatform platform) throws SipException, InvalidArgumentException, ParseException {
-
 		ContentTypeHeader contentTypeHeader = SipFactory.getInstance().createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
 
 		// 鍏煎鍥芥爣涓殑浣跨敤缂栫爜@鍩熷悕浣滀负RequestURI鐨勬儏鍐�

--
Gitblit v1.8.0