648540858
2023-04-21 5c3c3e6a4c144f77eb832fa9f736967d0bffa220
修复消息发送失败导致后续次通道无法点播的bug
4个文件已修改
21 ■■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) {
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){
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
@@ -142,8 +142,8 @@
            remotePort = request.getTopmostViaHeader().getRPort();
            // 解析本地地址替代
            if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) {
                remoteAddress = request.getTopmostViaHeader().getHost();
                remotePort = request.getTopmostViaHeader().getPort();
                remoteAddress = request.getRemoteAddress().getHostAddress();
                remotePort = request.getRemotePort();
            }
        }
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);
        }