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