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,6 +13,7 @@ import javax.sip.SipFactory;
13 import javax.sip.header.FromHeader; 13 import javax.sip.header.FromHeader;
14 import javax.sip.header.Header; 14 import javax.sip.header.Header;
15 import javax.sip.header.UserAgentHeader; 15 import javax.sip.header.UserAgentHeader;
  16 +import javax.sip.header.ViaHeader;
16 import javax.sip.message.Request; 17 import javax.sip.message.Request;
17 import java.text.ParseException; 18 import java.text.ParseException;
18 import java.util.ArrayList; 19 import java.util.ArrayList;
@@ -121,6 +122,12 @@ public class SipUtils { @@ -121,6 +122,12 @@ public class SipUtils {
121 return builder.toString(); 122 return builder.toString();
122 } 123 }
123 124
  125 + /**
  126 + * 从请求中获取设备ip地址和端口号
  127 + * @param request 请求
  128 + * @param sipUseSourceIpAsRemoteAddress false 从via中获取地址, true 直接获取远程地址
  129 + * @return 地址信息
  130 + */
124 public static RemoteAddressInfo getRemoteAddressFromRequest(SIPRequest request, boolean sipUseSourceIpAsRemoteAddress) { 131 public static RemoteAddressInfo getRemoteAddressFromRequest(SIPRequest request, boolean sipUseSourceIpAsRemoteAddress) {
125 132
126 String remoteAddress; 133 String remoteAddress;
@@ -131,12 +138,13 @@ public class SipUtils { @@ -131,12 +138,13 @@ public class SipUtils {
131 }else { 138 }else {
132 // 判断RPort是否改变,改变则说明路由nat信息变化,修改设备信息 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 if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) { 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