Commit 7f79b925686e36e830499f103ffbd439d74dd701

Authored by 648540858
1 parent 88721511

修复设备在事务内注销失败的问题

src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java
@@ -103,23 +103,27 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen @@ -103,23 +103,27 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
103 String title = registerFlag ? "[注册请求]": "[注销请求]"; 103 String title = registerFlag ? "[注册请求]": "[注销请求]";
104 logger.info(title + "设备:{}, 开始处理: {}", deviceId, requestAddress); 104 logger.info(title + "设备:{}, 开始处理: {}", deviceId, requestAddress);
105 if (device != null && 105 if (device != null &&
106 - device.getSipTransactionInfo() != null &&  
107 - request.getCallIdHeader().getCallId().equals(device.getSipTransactionInfo().getCallId())) { 106 + device.getSipTransactionInfo() != null &&
  107 + request.getCallIdHeader().getCallId().equals(device.getSipTransactionInfo().getCallId())) {
108 logger.info(title + "设备:{}, 注册续订: {}",device.getDeviceId(), device.getDeviceId()); 108 logger.info(title + "设备:{}, 注册续订: {}",device.getDeviceId(), device.getDeviceId());
109 - device.setExpires(request.getExpires().getExpires());  
110 - device.setIp(remoteAddressInfo.getIp());  
111 - device.setPort(remoteAddressInfo.getPort());  
112 - device.setHostAddress(remoteAddressInfo.getIp().concat(":").concat(String.valueOf(remoteAddressInfo.getPort())));  
113 - device.setLocalIp(request.getLocalAddress().getHostAddress());  
114 - Response registerOkResponse = getRegisterOkResponse(request);  
115 - // 判断TCP还是UDP  
116 - ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);  
117 - String transport = reqViaHeader.getTransport();  
118 - device.setTransport("TCP".equalsIgnoreCase(transport) ? "TCP" : "UDP");  
119 - sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), registerOkResponse);  
120 - device.setRegisterTime(DateUtil.getNow());  
121 - SipTransactionInfo sipTransactionInfo = new SipTransactionInfo((SIPResponse)registerOkResponse);  
122 - deviceService.online(device, sipTransactionInfo); 109 + if (registerFlag) {
  110 + device.setExpires(request.getExpires().getExpires());
  111 + device.setIp(remoteAddressInfo.getIp());
  112 + device.setPort(remoteAddressInfo.getPort());
  113 + device.setHostAddress(remoteAddressInfo.getIp().concat(":").concat(String.valueOf(remoteAddressInfo.getPort())));
  114 + device.setLocalIp(request.getLocalAddress().getHostAddress());
  115 + Response registerOkResponse = getRegisterOkResponse(request);
  116 + // 判断TCP还是UDP
  117 + ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
  118 + String transport = reqViaHeader.getTransport();
  119 + device.setTransport("TCP".equalsIgnoreCase(transport) ? "TCP" : "UDP");
  120 + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), registerOkResponse);
  121 + device.setRegisterTime(DateUtil.getNow());
  122 + SipTransactionInfo sipTransactionInfo = new SipTransactionInfo((SIPResponse)registerOkResponse);
  123 + deviceService.online(device, sipTransactionInfo);
  124 + }else {
  125 + deviceService.offline(deviceId, "主动注销");
  126 + }
123 return; 127 return;
124 } 128 }
125 String password = (device != null && !ObjectUtils.isEmpty(device.getPassword()))? device.getPassword() : sipConfig.getPassword(); 129 String password = (device != null && !ObjectUtils.isEmpty(device.getPassword()))? device.getPassword() : sipConfig.getPassword();