Commit 18898e982fa49d5907afa3f75cbaaa7a691b0308
1 parent
a9ab5c28
支持读取warning header作为错误消息的内容 #1030
Showing
1 changed file
with
20 additions
and
6 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/event/SipSubscribe.java
| ... | ... | @@ -2,6 +2,8 @@ package com.genersoft.iot.vmp.gb28181.event; |
| 2 | 2 | |
| 3 | 3 | import com.genersoft.iot.vmp.gb28181.bean.DeviceNotFoundEvent; |
| 4 | 4 | import gov.nist.javax.sip.message.SIPRequest; |
| 5 | +import gov.nist.javax.sip.message.SIPResponse; | |
| 6 | +import org.apache.commons.lang3.ObjectUtils; | |
| 5 | 7 | import org.slf4j.Logger; |
| 6 | 8 | import org.slf4j.LoggerFactory; |
| 7 | 9 | import org.springframework.scheduling.annotation.Scheduled; |
| ... | ... | @@ -11,8 +13,7 @@ import javax.sip.DialogTerminatedEvent; |
| 11 | 13 | import javax.sip.ResponseEvent; |
| 12 | 14 | import javax.sip.TimeoutEvent; |
| 13 | 15 | import javax.sip.TransactionTerminatedEvent; |
| 14 | -import javax.sip.header.CallIdHeader; | |
| 15 | -import javax.sip.message.Response; | |
| 16 | +import javax.sip.header.WarningHeader; | |
| 16 | 17 | import java.time.Instant; |
| 17 | 18 | import java.util.Map; |
| 18 | 19 | import java.util.concurrent.ConcurrentHashMap; |
| ... | ... | @@ -95,14 +96,27 @@ public class SipSubscribe { |
| 95 | 96 | this.event = event; |
| 96 | 97 | if (event instanceof ResponseEvent) { |
| 97 | 98 | ResponseEvent responseEvent = (ResponseEvent)event; |
| 98 | - Response response = responseEvent.getResponse(); | |
| 99 | + SIPResponse response = (SIPResponse)responseEvent.getResponse(); | |
| 99 | 100 | this.type = EventResultType.response; |
| 100 | 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 | 117 | this.statusCode = response.getStatusCode(); |
| 118 | + this.callId = response.getCallIdHeader().getCallId(); | |
| 103 | 119 | } |
| 104 | - this.callId = ((CallIdHeader)response.getHeader(CallIdHeader.NAME)).getCallId(); | |
| 105 | - | |
| 106 | 120 | }else if (event instanceof TimeoutEvent) { |
| 107 | 121 | TimeoutEvent timeoutEvent = (TimeoutEvent)event; |
| 108 | 122 | this.type = EventResultType.timeout; | ... | ... |