From eb6b6529cd5a59cd684b7ad1a3d569487fa4daa0 Mon Sep 17 00:00:00 2001
From: 64850858 <648540858@qq.com>
Date: 星期一, 07 六月 2021 15:51:58 +0800
Subject: [PATCH] 修复DeviceChannelMapper的存储错误
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java | 31 ++++++++++++++++++++-----------
1 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
index aa501d9..64be7ef 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
@@ -2,7 +2,10 @@
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
import java.util.Calendar;
+import java.util.Date;
import java.util.Locale;
import javax.sip.InvalidArgumentException;
@@ -70,12 +73,19 @@
boolean passwordCorrect = false;
// 娉ㄥ唽鏍囧織 0锛氭湭鎼哄甫鎺堟潈澶存垨鑰呭瘑鐮侀敊璇� 1锛氭敞鍐屾垚鍔� 2锛氭敞閿�鎴愬姛
int registerFlag = 0;
- Device device = null;
+ FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME);
+ AddressImpl address = (AddressImpl) fromHeader.getAddress();
+ SipUri uri = (SipUri) address.getURI();
+ String deviceId = uri.getUser();
+ Device device = storager.queryVideoDevice(deviceId);
AuthorizationHeader authorhead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME);
// 鏍¢獙瀵嗙爜鏄惁姝g‘
if (authorhead != null) {
passwordCorrect = new DigestServerAuthenticationHelper().doAuthenticatePlainTextPassword(request,
sipConfig.getSipPassword());
+ }
+ if (StringUtils.isEmpty(sipConfig.getSipPassword())){
+ passwordCorrect = true;
}
// 鏈惡甯︽巿鏉冨ご鎴栬�呭瘑鐮侀敊璇� 鍥炲401
@@ -100,13 +110,17 @@
response.addHeader(dateHeader);
ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME);
+ if (expiresHeader == null) {
+ response = getMessageFactory().createResponse(Response.BAD_REQUEST, request);
+ getServerTransaction(evt).sendResponse(response);
+ return;
+ }
// 娣诲姞Contact澶�
response.addHeader(request.getHeader(ContactHeader.NAME));
// 娣诲姞Expires澶�
response.addHeader(request.getExpires());
// 鑾峰彇鍒伴�氫俊鍦板潃绛変俊鎭�
- FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME);
ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
String received = viaHeader.getReceived();
int rPort = viaHeader.getRPort();
@@ -116,10 +130,7 @@
rPort = viaHeader.getPort();
}
//
- AddressImpl address = (AddressImpl) fromHeader.getAddress();
- SipUri uri = (SipUri) address.getURI();
- String deviceId = uri.getUser();
- device = storager.queryVideoDevice(deviceId);
+
if (device == null) {
device = new Device();
device.setStreamMode("UDP");
@@ -129,11 +140,12 @@
device.setPort(rPort);
device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
// 娉ㄩ攢鎴愬姛
- if (expiresHeader != null && expiresHeader.getExpires() == 0) {
+ if (expiresHeader.getExpires() == 0) {
registerFlag = 2;
}
// 娉ㄥ唽鎴愬姛
else {
+ device.setExpires(expiresHeader.getExpires());
registerFlag = 1;
// 鍒ゆ柇TCP杩樻槸UDP
boolean isTcp = false;
@@ -151,10 +163,7 @@
// 涓嬪彂catelog鏌ヨ鐩綍
if (registerFlag == 1 ) {
logger.info("[{}] 娉ㄥ唽鎴愬姛! deviceId:" + device.getDeviceId(), requestAddress);
- device.setRegisterTimeMillis(System.currentTimeMillis());
- storager.updateDevice(device);
- publisher.onlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_ONLINE_REGISTER);
-
+ publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_REGISTER);
// 閲嶆柊娉ㄥ唽鏇存柊璁惧鍜岄�氶亾锛屼互鍏嶈澶囨浛鎹㈡垨鏇存柊鍚庝俊鎭棤娉曟洿鏂�
handler.onRegister(device);
} else if (registerFlag == 2) {
--
Gitblit v1.8.0