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 76 // 会话已结束
77 77 dialogTerminated,
78 78 // 设备未找到
79   - deviceNotFoundEvent
  79 + deviceNotFoundEvent,
  80 + // 设备未找到
  81 + cmdSendFailEvent
80 82 }
81 83  
82 84 public static class EventResult<EventObject>{
... ... @@ -86,6 +88,9 @@ public class SipSubscribe {
86 88 public String callId;
87 89 public EventObject event;
88 90  
  91 + public EventResult() {
  92 + }
  93 +
89 94 public EventResult(EventObject event) {
90 95 this.event = event;
91 96 if (event instanceof ResponseEvent) {
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPSender.java
... ... @@ -46,8 +46,7 @@ public class SIPSender {
46 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 50 ViaHeader viaHeader = (ViaHeader)message.getHeader(ViaHeader.NAME);
52 51 String transport = "UDP";
53 52 if (viaHeader == null) {
... ... @@ -104,9 +103,6 @@ public class SIPSender {
104 103 sipProvider.sendResponse((Response)message);
105 104 }
106 105 }
107   - } finally {
108   -// logger.info("[SEND]:SUCCESS:{}", message);
109   - }
110 106 }
111 107  
112 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 142 remotePort = request.getTopmostViaHeader().getRPort();
143 143 // 解析本地地址替代
144 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 398 mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
399 399  
400 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 404 eventResult.msg = "命令发送失败";
403 405 errorEvent.response(eventResult);
404 406 }
... ...