Browse Source

修复流注销时移除流认证信息

648540858 3 năm trước cách đây
mục cha
commit
70c20364af

+ 53 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/bean/SipTransactionInfo.java

@@ -0,0 +1,53 @@
+package com.genersoft.iot.vmp.gb28181.bean;
+
+import gov.nist.javax.sip.message.SIPRequest;
+
+public class SipTransactionInfo {
+
+    private String callId;
+    private String fromTag;
+    private String toTag;
+    private String viaBranch;
+
+    public SipTransactionInfo(SIPRequest request) {
+        this.callId = request.getCallIdHeader().getCallId();
+        this.fromTag = request.getFromTag();
+        this.toTag = request.getToTag();
+        this.viaBranch = request.getTopmostViaHeader().getBranch();
+    }
+
+    public SipTransactionInfo() {
+    }
+
+    public String getCallId() {
+        return callId;
+    }
+
+    public void setCallId(String callId) {
+        this.callId = callId;
+    }
+
+    public String getFromTag() {
+        return fromTag;
+    }
+
+    public void setFromTag(String fromTag) {
+        this.fromTag = fromTag;
+    }
+
+    public String getToTag() {
+        return toTag;
+    }
+
+    public void setToTag(String toTag) {
+        this.toTag = toTag;
+    }
+
+    public String getViaBranch() {
+        return viaBranch;
+    }
+
+    public void setViaBranch(String viaBranch) {
+        this.viaBranch = viaBranch;
+    }
+}

+ 7 - 10
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java

@@ -417,10 +417,11 @@ public class ZLMHttpHookListener {
 		String schema = item.getSchema();
 		List<MediaItem.MediaTrack> tracks = item.getTracks();
 		boolean regist = item.isRegist();
-		if (item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
-				|| item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
-				|| item.getOriginType() == OriginType.RTC_PUSH.ordinal()) {
-			if (regist) {
+		if (regist) {
+			if (item.getOriginType() == OriginType.RTMP_PUSH.ordinal()
+					|| item.getOriginType() == OriginType.RTSP_PUSH.ordinal()
+					|| item.getOriginType() == OriginType.RTC_PUSH.ordinal()) {
+
 				StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
 				if (streamAuthorityInfo == null) {
 					streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(item);
@@ -429,9 +430,9 @@ public class ZLMHttpHookListener {
 					streamAuthorityInfo.setOriginTypeStr(item.getOriginTypeStr());
 				}
 				redisCatchStorage.updateStreamAuthorityInfo(app, stream, streamAuthorityInfo);
-			}else {
-				redisCatchStorage.removeStreamAuthorityInfo(app, stream);
 			}
+		}else {
+			redisCatchStorage.removeStreamAuthorityInfo(app, stream);
 		}
 
 		if ("rtsp".equals(schema)){
@@ -451,16 +452,12 @@ public class ZLMHttpHookListener {
 				if (streamInfo!=null){
 					redisCatchStorage.stopPlay(streamInfo);
 					storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
-					// 如果正在给上级推送,则发送bye
-
-
 				}else{
 					streamInfo = redisCatchStorage.queryPlayback(null, null, stream, null);
 					if (streamInfo != null) {
 						redisCatchStorage.stopPlayback(streamInfo.getDeviceID(), streamInfo.getChannelId(),
 								streamInfo.getStream(), null);
 					}
-					// 如果正在给上级推送,则发送bye
 				}
 			}else {
 				if (!"rtp".equals(app)){