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