|  | @@ -49,28 +49,28 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | +            // 判断RPort是否改变,改变则说明路由nat信息变化,修改设备信息
 | 
	
		
			
				|  |  | +            // 获取到通信地址等信息
 | 
	
		
			
				|  |  | +            ViaHeader viaHeader = (ViaHeader) evt.getRequest().getHeader(ViaHeader.NAME);
 | 
	
		
			
				|  |  | +            String received = viaHeader.getReceived();
 | 
	
		
			
				|  |  | +            int rPort = viaHeader.getRPort();
 | 
	
		
			
				|  |  | +            // 解析本地地址替代
 | 
	
		
			
				|  |  | +            if (StringUtils.isEmpty(received) || rPort == -1) {
 | 
	
		
			
				|  |  | +                received = viaHeader.getHost();
 | 
	
		
			
				|  |  | +                rPort = viaHeader.getPort();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (device.getPort() != rPort) {
 | 
	
		
			
				|  |  | +                device.setPort(rPort);
 | 
	
		
			
				|  |  | +                device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            device.setKeepaliveTime(DateUtil.getNow());
 | 
	
		
			
				|  |  |              if (device.getOnline() == 1) {
 | 
	
		
			
				|  |  |                  // 回复200 OK
 | 
	
		
			
				|  |  |                  responseAck(evt, Response.OK);
 | 
	
		
			
				|  |  | +                deviceService.updateDevice(device);
 | 
	
		
			
				|  |  |              }else {
 | 
	
		
			
				|  |  |                  // 对于已经离线的设备判断他的注册是否已经过期
 | 
	
		
			
				|  |  |                  if (!deviceService.expire(device)){
 | 
	
		
			
				|  |  | -                    device.setKeepaliveTime(DateUtil.getNow());
 | 
	
		
			
				|  |  | -                    // 判断RPort是否改变,改变则说明路由nat信息变化,修改设备信息
 | 
	
		
			
				|  |  | -                    // 获取到通信地址等信息
 | 
	
		
			
				|  |  | -                    ViaHeader viaHeader = (ViaHeader) evt.getRequest().getHeader(ViaHeader.NAME);
 | 
	
		
			
				|  |  | -                    String received = viaHeader.getReceived();
 | 
	
		
			
				|  |  | -                    int rPort = viaHeader.getRPort();
 | 
	
		
			
				|  |  | -                    // 解析本地地址替代
 | 
	
		
			
				|  |  | -                    if (StringUtils.isEmpty(received) || rPort == -1) {
 | 
	
		
			
				|  |  | -                        received = viaHeader.getHost();
 | 
	
		
			
				|  |  | -                        rPort = viaHeader.getPort();
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    if (device.getPort() != rPort) {
 | 
	
		
			
				|  |  | -                        device.setPort(rPort);
 | 
	
		
			
				|  |  | -                        device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    device.setKeepaliveTime(DateUtil.getNow());
 | 
	
		
			
				|  |  |                      deviceService.online(device);
 | 
	
		
			
				|  |  |                      // 回复200 OK
 | 
	
		
			
				|  |  |                      responseAck(evt, Response.OK);
 |