From 22efd0f56c20e1aedb18fa7b9bcdc48007fcc954 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 20 十二月 2021 09:51:51 +0800
Subject: [PATCH] 添加心跳到期时验证zlm是否真的离线。

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java |   31 ++++++++++++++++++++-----------
 1 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
index 5eda75d..aee414f 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -31,12 +31,11 @@
 import javax.sip.message.Request;
 import javax.sip.message.Response;
 import java.text.ParseException;
+import java.util.List;
 import java.util.Vector;
 
-/**    
- * @description:澶勭悊INVITE璇锋眰
- * @author: panll
- * @date:   2021骞�1鏈�14鏃�
+/**
+ * SIP鍛戒护绫诲瀷锛� INVITE璇锋眰
  */
 @SuppressWarnings("rawtypes")
 @Component
@@ -107,7 +106,8 @@
 			if (platform != null) {
 				// 鏌ヨ骞冲彴涓嬫槸鍚︽湁璇ラ�氶亾
 				DeviceChannel channel = storager.queryChannelInParentPlatform(requesterId, channelId);
-				GbStream gbStream = storager.queryStreamInParentPlatform(requesterId, channelId);
+				List<GbStream> gbStreams = storager.queryStreamInParentPlatform(requesterId, channelId);
+				GbStream gbStream = gbStreams.size() > 0? gbStreams.get(0):null;
 				MediaServerItem mediaServerItem = null;
 				// 涓嶆槸閫氶亾鍙兘鏄洿鎾祦
 				if (channel != null && gbStream == null ) {
@@ -140,12 +140,21 @@
 				// 瑙f瀽sdp娑堟伅, 浣跨敤jainsip 鑷甫鐨剆dp瑙f瀽鏂瑰紡
 				String contentString = new String(request.getRawContent());
 
-				// jainSip涓嶆敮鎸亂=瀛楁锛� 绉婚櫎绉婚櫎浠ヨВ鏋愩��
+				// jainSip涓嶆敮鎸亂=瀛楁锛� 绉婚櫎浠ヨВ鏋愩��
 				int ssrcIndex = contentString.indexOf("y=");
-				//ssrc瑙勫畾闀垮害涓�10瀛楄妭锛屼笉鍙栦綑涓嬮暱搴︿互閬垮厤鍚庣画杩樻湁鈥渇=鈥濆瓧娈�
-				String ssrc = contentString.substring(ssrcIndex + 2, ssrcIndex + 12);
-				String substring = contentString.substring(0, contentString.indexOf("y="));
-				SessionDescription sdp = SdpFactory.getInstance().createSessionDescription(substring);
+				// 妫�鏌ユ槸鍚︽湁y瀛楁
+				String ssrcDefault = "0000000000";
+				String ssrc;
+				SessionDescription sdp;
+				if (ssrcIndex >= 0) {
+					//ssrc瑙勫畾闀垮害涓�10瀛楄妭锛屼笉鍙栦綑涓嬮暱搴︿互閬垮厤鍚庣画杩樻湁鈥渇=鈥濆瓧娈�
+					ssrc = contentString.substring(ssrcIndex + 2, ssrcIndex + 12);
+					String substring = contentString.substring(0, contentString.indexOf("y="));
+					sdp = SdpFactory.getInstance().createSessionDescription(substring);
+				}else {
+					ssrc = ssrcDefault;
+					sdp = SdpFactory.getInstance().createSessionDescription(contentString);
+				}
 
 				//  鑾峰彇鏀寔鐨勬牸寮�
 				Vector mediaDescriptions = sdp.getMediaDescriptions(true);
@@ -309,7 +318,7 @@
 
 			} else {
 				// 闈炰笂绾у钩鍙拌姹傦紝鏌ヨ鏄惁璁惧璇锋眰锛堥�氬父涓烘帴鏀惰闊冲箍鎾殑璁惧锛�
-				Device device = storager.queryVideoDevice(requesterId);
+				Device device = redisCatchStorage.getDevice(requesterId);
 				if (device != null) {
 					logger.info("鏀跺埌璁惧" + requesterId + "鐨勮闊冲箍鎾璉nvite璇锋眰");
 					responseAck(evt, Response.TRYING);

--
Gitblit v1.8.0