From bb226c431e28ffdda284ba2420a93cf4ed4e0c30 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 02 十一月 2021 16:50:22 +0800
Subject: [PATCH] 修复订阅sip消息导致的内存溢出以及录像回放的问题

---
 src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java |   24 +++++++++++++++++++++---
 1 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
index fb1aae2..1afabb7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
@@ -9,6 +9,7 @@
 
 import javax.sip.*;
 import javax.sip.header.CallIdHeader;
+import javax.sip.header.Header;
 import javax.sip.message.Response;
 
 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
@@ -168,7 +169,8 @@
 				if (callIdHeader != null) {
 					SipSubscribe.Event subscribe = sipSubscribe.getOkSubscribe(callIdHeader.getCallId());
 					if (subscribe != null) {
-						subscribe.response(evt);
+						SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(evt);
+						subscribe.response(eventResult);
 					}
 				}
 			}
@@ -181,7 +183,8 @@
 				if (callIdHeader != null) {
 					SipSubscribe.Event subscribe = sipSubscribe.getErrorSubscribe(callIdHeader.getCallId());
 					if (subscribe != null) {
-						subscribe.response(evt);
+						SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(evt);
+						subscribe.response(eventResult);
 					}
 				}
 			}
@@ -204,7 +207,11 @@
 	@Override
 	public void processTimeout(TimeoutEvent timeoutEvent) {
 		// TODO Auto-generated method stub
-
+		CallIdHeader callIdHeader = timeoutEvent.getClientTransaction().getDialog().getCallId();
+		String callId = callIdHeader.getCallId();
+		SipSubscribe.Event errorSubscribe = sipSubscribe.getErrorSubscribe(callId);
+		SipSubscribe.EventResult<TimeoutEvent> timeoutEventEventResult = new SipSubscribe.EventResult<>(timeoutEvent);
+		errorSubscribe.response(timeoutEventEventResult);
 	}
 
 	/**
@@ -220,6 +227,7 @@
 	@Override
 	public void processIOException(IOExceptionEvent exceptionEvent) {
 		// TODO Auto-generated method stub
+
 	}
 
 	/**
@@ -235,6 +243,11 @@
 	@Override
 	public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) {
 		// TODO Auto-generated method stub
+//		CallIdHeader callIdHeader = transactionTerminatedEvent.getClientTransaction().getDialog().getCallId();
+//		String callId = callIdHeader.getCallId();
+//		SipSubscribe.Event errorSubscribe = sipSubscribe.getErrorSubscribe(callId);
+//		SipSubscribe.EventResult<TransactionTerminatedEvent> eventResult = new SipSubscribe.EventResult<>(transactionTerminatedEvent);
+//		errorSubscribe.response(eventResult);
 	}
 
 	/**
@@ -250,6 +263,11 @@
 	@Override
 	public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) {
 		// TODO Auto-generated method stub
+//		CallIdHeader callIdHeader = dialogTerminatedEvent.getDialog().getCallId();
+//		String callId = callIdHeader.getCallId();
+//		SipSubscribe.Event errorSubscribe = sipSubscribe.getErrorSubscribe(callId);
+//		SipSubscribe.EventResult<DialogTerminatedEvent> eventResult = new SipSubscribe.EventResult<>(dialogTerminatedEvent);
+//		errorSubscribe.response(eventResult);
 
 	}
 

--
Gitblit v1.8.0