Commit 5c3c3e6a4c144f77eb832fa9f736967d0bffa220

Authored by 648540858
1 parent d6262acf

修复消息发送失败导致后续次通道无法点播的bug

src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
@@ -76,7 +76,9 @@ public class SipSubscribe { @@ -76,7 +76,9 @@ public class SipSubscribe {
76 // 会话已结束 76 // 会话已结束
77 dialogTerminated, 77 dialogTerminated,
78 // 设备未找到 78 // 设备未找到
79 - deviceNotFoundEvent 79 + deviceNotFoundEvent,
  80 + // 设备未找到
  81 + cmdSendFailEvent
80 } 82 }
81 83
82 public static class EventResult<EventObject>{ 84 public static class EventResult<EventObject>{
@@ -86,6 +88,9 @@ public class SipSubscribe { @@ -86,6 +88,9 @@ public class SipSubscribe {
86 public String callId; 88 public String callId;
87 public EventObject event; 89 public EventObject event;
88 90
  91 + public EventResult() {
  92 + }
  93 +
89 public EventResult(EventObject event) { 94 public EventResult(EventObject event) {
90 this.event = event; 95 this.event = event;
91 if (event instanceof ResponseEvent) { 96 if (event instanceof ResponseEvent) {
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
@@ -46,8 +46,7 @@ public class SIPSender { @@ -46,8 +46,7 @@ public class SIPSender {
46 transmitRequest(ip, message, errorEvent, null); 46 transmitRequest(ip, message, errorEvent, null);
47 } 47 }
48 48
49 - public void transmitRequest(String ip, Message message, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException, ParseException {  
50 - try { 49 + public void transmitRequest(String ip, Message message, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent) throws SipException {
51 ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME); 50 ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME);
52 String transport = "UDP"; 51 String transport = "UDP";
53 if (viaHeader == null) { 52 if (viaHeader == null) {
@@ -104,9 +103,6 @@ public class SIPSender { @@ -104,9 +103,6 @@ public class SIPSender {
104 sipProvider.sendResponse((Response)message); 103 sipProvider.sendResponse((Response)message);
105 } 104 }
106 } 105 }
107 - } finally {  
108 -// logger.info("[SEND]:SUCCESS:{}", message);  
109 - }  
110 } 106 }
111 107
112 public CallIdHeader getNewCallIdHeader(String ip, String transport){ 108 public CallIdHeader getNewCallIdHeader(String ip, String transport){
src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
@@ -142,8 +142,8 @@ public class SipUtils { @@ -142,8 +142,8 @@ public class SipUtils {
142 remotePort = request.getTopmostViaHeader().getRPort(); 142 remotePort = request.getTopmostViaHeader().getRPort();
143 // 解析本地地址替代 143 // 解析本地地址替代
144 if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) { 144 if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) {
145 - remoteAddress = request.getTopmostViaHeader().getHost();  
146 - remotePort = request.getTopmostViaHeader().getPort(); 145 + remoteAddress = request.getRemoteAddress().getHostAddress();
  146 + remotePort = request.getRemotePort();
147 } 147 }
148 } 148 }
149 149
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -398,7 +398,9 @@ public class PlayServiceImpl implements IPlayService { @@ -398,7 +398,9 @@ public class PlayServiceImpl implements IPlayService {
398 mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc()); 398 mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
399 399
400 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream()); 400 streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
401 - SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult(new CmdSendFailEvent(null)); 401 + SipSubscribe.EventResult eventResult = new SipSubscribe.EventResult();
  402 + eventResult.type = SipSubscribe.EventResultType.cmdSendFailEvent;
  403 + eventResult.statusCode = -1;
402 eventResult.msg = "命令发送失败"; 404 eventResult.msg = "命令发送失败";
403 errorEvent.response(eventResult); 405 errorEvent.response(eventResult);
404 } 406 }