Commit 340a23a9613dae68361e5e4352556fa929911e68

Authored by Lawrence
1 parent 1a746f28

修复部分设备invite后bye无法找到设备地址的问题

src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
... ... @@ -7,10 +7,13 @@ import javax.sip.Dialog;
7 7 import javax.sip.InvalidArgumentException;
8 8 import javax.sip.SipException;
9 9 import javax.sip.TransactionDoesNotExistException;
  10 +import javax.sip.address.Address;
  11 +import javax.sip.address.SipURI;
10 12 import javax.sip.header.ViaHeader;
11 13 import javax.sip.message.Request;
12 14  
13 15 import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.boot.autoconfigure.security.SecurityProperties.Headers;
14 17 import org.springframework.stereotype.Component;
15 18  
16 19 import com.genersoft.iot.vmp.conf.SipConfig;
... ... @@ -21,6 +24,9 @@ import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
21 24 import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider;
22 25 import com.genersoft.iot.vmp.gb28181.utils.DateUtil;
23 26  
  27 +import java.util.regex.Pattern;
  28 +import java.util.regex.Matcher;
  29 +
24 30 /**
25 31 * @Description:设备能力接口,用于定义设备的控制、查询能力
26 32 * @author: songww
... ... @@ -288,6 +294,13 @@ public class SIPCommander implements ISIPCommander {
288 294 return;
289 295 }
290 296 Request byeRequest = dialog.createRequest(Request.BYE);
  297 + SipURI byeURI = (SipURI) byeRequest.getRequestURI();
  298 + String vh = transaction.getRequest().getHeader(ViaHeader.NAME).toString();
  299 + Pattern p = Pattern.compile("(\\d+\\.\\d+\\.\\d+\\.\\d+)\\:(\\d+)");
  300 + Matcher matcher = p.matcher(vh);
  301 + if (matcher.find()) {
  302 + byeURI.setHost(matcher.group(1));
  303 + }
291 304 ViaHeader viaHeader = (ViaHeader) byeRequest.getHeader(ViaHeader.NAME);
292 305 String protocol = viaHeader.getTransport().toUpperCase();
293 306 ClientTransaction clientTransaction = null;
... ... @@ -301,6 +314,8 @@ public class SIPCommander implements ISIPCommander {
301 314 e.printStackTrace();
302 315 } catch (SipException e) {
303 316 e.printStackTrace();
  317 + } catch (ParseException e) {
  318 + e.printStackTrace();
304 319 }
305 320 }
306 321  
... ...