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 103 String title = registerFlag ? "[注册请求]": "[注销请求]";
104 104 logger.info(title + "设备:{}, 开始处理: {}", deviceId, requestAddress);
105 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 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 127 return;
124 128 }
125 129 String password = (device != null && !ObjectUtils.isEmpty(device.getPassword()))? device.getPassword() : sipConfig.getPassword();
... ...