Commit 151699137259a9a92463b36795a5f935c62349c6

Authored by 648540858
1 parent 5606bce8

回滚via获取地址的方式

src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
... ... @@ -13,6 +13,7 @@ import javax.sip.SipFactory;
13 13 import javax.sip.header.FromHeader;
14 14 import javax.sip.header.Header;
15 15 import javax.sip.header.UserAgentHeader;
  16 +import javax.sip.header.ViaHeader;
16 17 import javax.sip.message.Request;
17 18 import java.text.ParseException;
18 19 import java.util.ArrayList;
... ... @@ -121,6 +122,12 @@ public class SipUtils {
121 122 return builder.toString();
122 123 }
123 124  
  125 + /**
  126 + * 从请求中获取设备ip地址和端口号
  127 + * @param request 请求
  128 + * @param sipUseSourceIpAsRemoteAddress false 从via中获取地址, true 直接获取远程地址
  129 + * @return 地址信息
  130 + */
124 131 public static RemoteAddressInfo getRemoteAddressFromRequest(SIPRequest request, boolean sipUseSourceIpAsRemoteAddress) {
125 132  
126 133 String remoteAddress;
... ... @@ -131,12 +138,13 @@ public class SipUtils {
131 138 }else {
132 139 // 判断RPort是否改变,改变则说明路由nat信息变化,修改设备信息
133 140 // 获取到通信地址等信息
134   - remoteAddress = request.getTopmostViaHeader().getReceived();
135   - remotePort = request.getTopmostViaHeader().getPort();
  141 + ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
  142 + remoteAddress = viaHeader.getReceived();
  143 + remotePort = viaHeader.getRPort();
136 144 // 解析本地地址替代
137 145 if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) {
138   - remoteAddress = request.getViaHost();
139   - remotePort = request.getViaPort();
  146 + remoteAddress = viaHeader.getHost();
  147 + remotePort = viaHeader.getPort();
140 148 }
141 149 }
142 150  
... ...