From 3609d361118d75dd221959977bfac33a37815953 Mon Sep 17 00:00:00 2001
From: lawrencehj <1934378145@qq.com>
Date: 星期一, 15 三月 2021 15:24:41 +0800
Subject: [PATCH] 完成响应上级远程启动信令执行

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java |   22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index 16698f9..92835e5 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -7,8 +7,11 @@
 import javax.sip.header.FromHeader;
 import javax.sip.header.HeaderAddress;
 import javax.sip.InvalidArgumentException;
+import javax.sip.ListeningPoint;
+import javax.sip.ObjectInUseException;
 import javax.sip.RequestEvent;
 import javax.sip.SipException;
+import javax.sip.SipProvider;
 import javax.sip.message.Request;
 import javax.sip.message.Response;
 
@@ -36,6 +39,7 @@
 import com.genersoft.iot.vmp.utils.redis.RedisUtil;
 import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
 
+import gov.nist.javax.sip.SipStackImpl;
 import gov.nist.javax.sip.address.AddressImpl;
 import gov.nist.javax.sip.address.SipUri;
 
@@ -286,7 +290,7 @@
 				deferredResultHolder.invokeResult(msg);
 			} else {
 				// 姝ゅ鏄笂绾у彂鍑虹殑DeviceControl鎸囦护
-				if (XmlUtil.getText(rootElement, "TeleBoot").equals("Boot") && false) {	// 杩滅▼鍚姩鍔熻兘锛氶渶瑕佸湪閲嶆柊鍚姩绋嬪簭鍚庡厛瀵筍ipStack瑙g粦
+				if (XmlUtil.getText(rootElement, "TeleBoot").equals("Boot") ) {	// 杩滅▼鍚姩鍔熻兘锛氶渶瑕佸湪閲嶆柊鍚姩绋嬪簭鍚庡厛瀵筍ipStack瑙g粦
 					String platformId = ((SipUri) ((HeaderAddress) evt.getRequest().getHeader(FromHeader.NAME)).getAddress().getURI()).getUser();
 					logger.info("鎵ц杩滅▼鍚姩鍛戒护");
 					ParentPlatform parentPlatform = storager.queryParentPlatById(platformId);
@@ -296,12 +300,26 @@
 						@Override
 						public void run() {
 							try {
-								Thread.sleep(1000);
+								Thread.sleep(3000);
+								SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
+								SipStackImpl stack = (SipStackImpl)up.getSipStack();
+								stack.stop();
+								Iterator listener = stack.getListeningPoints();
+								while (listener.hasNext()) {
+									stack.deleteListeningPoint((ListeningPoint) listener.next());
+								}
+								Iterator providers = stack.getSipProviders();
+								while (providers.hasNext()) {
+									stack.deleteSipProvider((SipProvider) providers.next());
+								}
 								VManageBootstrap.restart();
 							} catch (InterruptedException ignored) {
+							} catch (ObjectInUseException e) {
+								e.printStackTrace();
 							}
 						}
 					});
+		
 					restartThread.setDaemon(false);
 					restartThread.start();
 				}

--
Gitblit v1.8.0