Fang
2022-03-07 bea63f67e75ea6c38d946c2ee463260fcf815f87
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
@@ -10,6 +10,7 @@
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import gov.nist.javax.sip.RequestEventExt;
import gov.nist.javax.sip.address.AddressImpl;
@@ -52,6 +53,9 @@
   private RegisterLogicHandler handler;
   @Autowired
   private IRedisCatchStorage redisCatchStorage;
   @Autowired
   private IVideoManagerStorager storager;
   @Autowired
@@ -86,8 +90,13 @@
         AddressImpl address = (AddressImpl) fromHeader.getAddress();
         SipUri uri = (SipUri) address.getURI();
         String deviceId = uri.getUser();
         Device deviceInRedis = redisCatchStorage.getDevice(deviceId);
         Device device = storager.queryVideoDevice(deviceId);
         AuthorizationHeader authorhead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME);
         if (deviceInRedis != null && device == null) {
            // redis 存在脏数据
            redisCatchStorage.clearCatchByDeviceId(deviceId);
         }
         AuthorizationHeader authorhead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME);
         // 校验密码是否正确
         if (authorhead != null) {
            passwordCorrect = new DigestServerAuthenticationHelper().doAuthenticatePlainTextPassword(request,
@@ -149,6 +158,10 @@
                  device.setCharset("gb2312");
                  device.setDeviceId(deviceId);
                  device.setFirsRegister(true);
               }else {
                  if (device.getOnline() == 0) {
                     device.setFirsRegister(true);
                  }
               }
               device.setIp(received);
               device.setPort(rPort);
@@ -178,7 +191,6 @@
         if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
         // 注册成功
         // 保存到redis
         // 下发catelog查询目录
         if (registerFlag == 1 ) {
            logger.info("[{}] 注册成功! deviceId:" + device.getDeviceId(), requestAddress);
            publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_REGISTER);