From 874b37ef35104fa8067e869ddf5458053146b519 Mon Sep 17 00:00:00 2001
From: 648540858 <456PANlinlin>
Date: 星期二, 16 十一月 2021 23:22:57 +0800
Subject: [PATCH] 修复级联注册消息回复的空指针异常

---
 src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
index 4245bdd..f341548 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
@@ -6,6 +6,8 @@
 import org.springframework.stereotype.Component;
 
 import javax.sip.*;
+import javax.sip.header.CallIdHeader;
+import javax.sip.message.Response;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Map;
@@ -23,6 +25,7 @@
     private Map<String, Date> timeSubscribes = new ConcurrentHashMap<>();
 
 //    @Scheduled(cron="*/5 * * * * ?")   //姣忎簲绉掓墽琛屼竴娆�
+//    @Scheduled(fixedRate= 100 * 60 * 60 )
     @Scheduled(cron="0 0 * * * ?")   //姣忓皬鏃舵墽琛屼竴娆★紝 姣忎釜鏁寸偣
     public void execute(){
         logger.info("[瀹氭椂浠诲姟] 娓呯悊杩囨湡鐨勮闃呬俊鎭�");
@@ -58,11 +61,15 @@
             this.event = event;
             if (event instanceof ResponseEvent) {
                 ResponseEvent responseEvent = (ResponseEvent)event;
-               this.type = "response";
-               this.msg = responseEvent.getResponse().getReasonPhrase();
-               this.statusCode = responseEvent.getResponse().getStatusCode();
-               this.callId = responseEvent.getDialog().getCallId().getCallId();
-               this.dialog = responseEvent.getDialog();
+                Response response = responseEvent.getResponse();
+                this.dialog = responseEvent.getDialog();
+                this.type = "response";
+                if (response != null) {
+                    this.msg = response.getReasonPhrase();
+                    this.statusCode = response.getStatusCode();
+                }
+                this.callId = ((CallIdHeader)response.getHeader(CallIdHeader.NAME)).getCallId();
+
             }else if (event instanceof TimeoutEvent) {
                 TimeoutEvent timeoutEvent = (TimeoutEvent)event;
                 this.type = "timeout";

--
Gitblit v1.8.0