Commit 18898e982fa49d5907afa3f75cbaaa7a691b0308

Authored by 648540858
1 parent a9ab5c28

支持读取warning header作为错误消息的内容 #1030

src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
@@ -2,6 +2,8 @@ package com.genersoft.iot.vmp.gb28181.event; @@ -2,6 +2,8 @@ package com.genersoft.iot.vmp.gb28181.event;
2 2
3 import com.genersoft.iot.vmp.gb28181.bean.DeviceNotFoundEvent; 3 import com.genersoft.iot.vmp.gb28181.bean.DeviceNotFoundEvent;
4 import gov.nist.javax.sip.message.SIPRequest; 4 import gov.nist.javax.sip.message.SIPRequest;
  5 +import gov.nist.javax.sip.message.SIPResponse;
  6 +import org.apache.commons.lang3.ObjectUtils;
5 import org.slf4j.Logger; 7 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory; 8 import org.slf4j.LoggerFactory;
7 import org.springframework.scheduling.annotation.Scheduled; 9 import org.springframework.scheduling.annotation.Scheduled;
@@ -11,8 +13,7 @@ import javax.sip.DialogTerminatedEvent; @@ -11,8 +13,7 @@ import javax.sip.DialogTerminatedEvent;
11 import javax.sip.ResponseEvent; 13 import javax.sip.ResponseEvent;
12 import javax.sip.TimeoutEvent; 14 import javax.sip.TimeoutEvent;
13 import javax.sip.TransactionTerminatedEvent; 15 import javax.sip.TransactionTerminatedEvent;
14 -import javax.sip.header.CallIdHeader;  
15 -import javax.sip.message.Response; 16 +import javax.sip.header.WarningHeader;
16 import java.time.Instant; 17 import java.time.Instant;
17 import java.util.Map; 18 import java.util.Map;
18 import java.util.concurrent.ConcurrentHashMap; 19 import java.util.concurrent.ConcurrentHashMap;
@@ -95,14 +96,27 @@ public class SipSubscribe { @@ -95,14 +96,27 @@ public class SipSubscribe {
95 this.event = event; 96 this.event = event;
96 if (event instanceof ResponseEvent) { 97 if (event instanceof ResponseEvent) {
97 ResponseEvent responseEvent = (ResponseEvent)event; 98 ResponseEvent responseEvent = (ResponseEvent)event;
98 - Response response = responseEvent.getResponse(); 99 + SIPResponse response = (SIPResponse)responseEvent.getResponse();
99 this.type = EventResultType.response; 100 this.type = EventResultType.response;
100 if (response != null) { 101 if (response != null) {
101 - this.msg = response.getReasonPhrase(); 102 + WarningHeader warningHeader = (WarningHeader)response.getHeader(WarningHeader.NAME);
  103 + if (warningHeader != null && !ObjectUtils.isEmpty(warningHeader.getText())) {
  104 + this.msg = "";
  105 + if (warningHeader.getCode() > 0) {
  106 + this.msg += warningHeader.getCode() + ":";
  107 + }
  108 + if (warningHeader.getAgent() != null) {
  109 + this.msg += warningHeader.getCode() + ":";
  110 + }
  111 + if (warningHeader.getText() != null) {
  112 + this.msg += warningHeader.getText();
  113 + }
  114 + }else {
  115 + this.msg = response.getReasonPhrase();
  116 + }
102 this.statusCode = response.getStatusCode(); 117 this.statusCode = response.getStatusCode();
  118 + this.callId = response.getCallIdHeader().getCallId();
103 } 119 }
104 - this.callId = ((CallIdHeader)response.getHeader(CallIdHeader.NAME)).getCallId();  
105 -  
106 }else if (event instanceof TimeoutEvent) { 120 }else if (event instanceof TimeoutEvent) {
107 TimeoutEvent timeoutEvent = (TimeoutEvent)event; 121 TimeoutEvent timeoutEvent = (TimeoutEvent)event;
108 this.type = EventResultType.timeout; 122 this.type = EventResultType.timeout;