Commit 151699137259a9a92463b36795a5f935c62349c6
1 parent
5606bce8
回滚via获取地址的方式
Showing
1 changed file
with
12 additions
and
4 deletions
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 | ... | ... |