From 5c3c3e6a4c144f77eb832fa9f736967d0bffa220 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 21 四月 2023 14:18:52 +0800
Subject: [PATCH] 修复消息发送失败导致后续次通道无法点播的bug
---
src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java | 7 ++++++-
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java | 4 +++-
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java | 4 ++--
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java | 6 +-----
4 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
index efa4d42..75751ad 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
@@ -76,7 +76,9 @@
// 浼氳瘽宸茬粨鏉�
dialogTerminated,
// 璁惧鏈壘鍒�
- deviceNotFoundEvent
+ deviceNotFoundEvent,
+ // 璁惧鏈壘鍒�
+ cmdSendFailEvent
}
public static class EventResult<EventObject>{
@@ -86,6 +88,9 @@
public String callId;
public EventObject event;
+ public EventResult() {
+ }
+
public EventResult(EventObject event) {
this.event = event;
if (event instanceof ResponseEvent) {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
index 89e6e32..e8066b7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
@@ -46,8 +46,7 @@
transmitRequest(ip, message, errorEvent, null);
}
- public void transmitRequest(String ip, Message message, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException, ParseException {
- try {
+ public void transmitRequest(String ip, Message message, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException {
ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME);
String transport = "UDP";
if (viaHeader == null) {
@@ -104,9 +103,6 @@
sipProvider.sendResponse((Response)message);
}
}
- } finally {
-// logger.info("[SEND]:SUCCESS:{}", message);
- }
}
public CallIdHeader getNewCallIdHeader(String ip, String transport){
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
index f983150..1f4632e 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
@@ -142,8 +142,8 @@
remotePort = request.getTopmostViaHeader().getRPort();
// 瑙f瀽鏈湴鍦板潃鏇夸唬
if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) {
- remoteAddress = request.getTopmostViaHeader().getHost();
- remotePort = request.getTopmostViaHeader().getPort();
+ remoteAddress = request.getRemoteAddress().getHostAddress();
+ remotePort = request.getRemotePort();
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
index a18d8ba..aead661 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -398,7 +398,9 @@
mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
- SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(new CmdSendFailEvent(null));
+ SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult();
+ eventResult.type = SipSubscribe.EventResultType.cmdSendFailEvent;
+ eventResult.statusCode = -1;
eventResult.msg = "鍛戒护鍙戦�佸け璐�";
errorEvent.response(eventResult);
}
--
Gitblit v1.8.0