|
|
@ -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); |
|
|
|