From 053cd130aa7794e461ca02696455e82280dbdd48 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 31 三月 2023 09:10:16 +0800
Subject: [PATCH] 修复 设备注册时报错 #799
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java | 37 ++++++++++++++++++++++++++++---------
1 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
index dc5c31a..af31818 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -75,20 +75,40 @@
}
@Override
- public void unregister(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
- register(parentPlatform, null, null, errorEvent, okEvent, false, false);
+ public void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
+
+ register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, false, true);
}
@Override
- public void register(ParentPlatform parentPlatform, @Nullable String callId, @Nullable WWWAuthenticateHeader www,
+ public void unregister(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
+ register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, false, false);
+ }
+
+ @Override
+ public void register(ParentPlatform parentPlatform, @Nullable SipTransactionInfo sipTransactionInfo, @Nullable WWWAuthenticateHeader www,
SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException {
Request request;
- if (!registerAgain ) {
- CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
+ CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
+ String fromTag = SipUtils.getNewFromTag();
+ String toTag = null;
+ if (sipTransactionInfo != null ) {
+ if (sipTransactionInfo.getCallId() != null) {
+ callIdHeader.setCallId(sipTransactionInfo.getCallId());
+ }
+ if (sipTransactionInfo.getFromTag() != null) {
+ fromTag = sipTransactionInfo.getFromTag();
+ }
+ if (sipTransactionInfo.getToTag() != null) {
+ toTag = sipTransactionInfo.getToTag();
+ }
+ }
+
+ if (!registerAgain ) {
request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform,
- redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(),
- SipUtils.getNewViaTag(), callIdHeader, isRegister);
+ redisCatchStorage.getCSEQ(), fromTag,
+ toTag, callIdHeader, isRegister);
// 灏� callid 鍐欏叆缂撳瓨锛� 绛夋敞鍐屾垚鍔熷彲浠ユ洿鏂扮姸鎬�
String callIdFromHeader = callIdHeader.getCallId();
redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister));
@@ -106,8 +126,7 @@
});
}else {
- CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
- request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, SipUtils.getNewFromTag(), null, callId, www, callIdHeader, isRegister);
+ request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, fromTag, toTag, www, callIdHeader, isRegister);
}
sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, okEvent);
--
Gitblit v1.8.0