From a29a0a0785f966294ba01982fba62c1ff0f23bea Mon Sep 17 00:00:00 2001 From: panlinlin <648540858@qq.com> Date: 星期四, 22 四月 2021 17:33:07 +0800 Subject: [PATCH] 增加对设备的兼容性 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java | 52 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java index 4204ce7..0e238b0 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java @@ -1,37 +1,59 @@ package com.genersoft.iot.vmp.gb28181.transmit.response.impl; -import javax.sip.Dialog; -import javax.sip.InvalidArgumentException; -import javax.sip.ResponseEvent; -import javax.sip.SipException; -import javax.sip.message.Request; +import java.text.ParseException; +import javax.sip.*; +import javax.sip.address.SipURI; +import javax.sip.header.CSeqHeader; +import javax.sip.message.Request; +import javax.sip.message.Response; + +import gov.nist.javax.sip.ResponseEventExt; import org.springframework.stereotype.Component; import com.genersoft.iot.vmp.conf.SipConfig; import com.genersoft.iot.vmp.gb28181.SipLayer; import com.genersoft.iot.vmp.gb28181.transmit.response.ISIPResponseProcessor; -/** + +/** * @Description:澶勭悊INVITE鍝嶅簲 - * @author: songww - * @date: 2020骞�5鏈�3鏃� 涓嬪崍4:43:52 + * @author: swwheihei + * @date: 2020骞�5鏈�3鏃� 涓嬪崍4:43:52 */ @Component public class InviteResponseProcessor implements ISIPResponseProcessor { + // private final static Logger logger = LoggerFactory.getLogger(InviteResponseProcessor.class); + /** * 澶勭悊invite鍝嶅簲 * - * @param request - * 鍝嶅簲娑堟伅 - */ + * @param evt 鍝嶅簲娑堟伅 + * @throws ParseException + */ @Override - public void process(ResponseEvent evt, SipLayer layer, SipConfig config) { + public void process(ResponseEvent evt, SipLayer layer, SipConfig config) throws ParseException { try { - Dialog dialog = evt.getDialog(); - Request reqAck =dialog.createAck(1L); - dialog.sendAck(reqAck); + Response response = evt.getResponse(); + int statusCode = response.getStatusCode(); + // trying涓嶄細鍥炲 + if (statusCode == Response.TRYING) { + } + // 鎴愬姛鍝嶅簲 + // 涓嬪彂ack + if (statusCode == Response.OK) { + ResponseEventExt event = (ResponseEventExt)evt; + Dialog dialog = evt.getDialog(); + CSeqHeader cseq = (CSeqHeader) response.getHeader(CSeqHeader.NAME); + Request reqAck = dialog.createAck(cseq.getSeqNumber()); + SipURI requestURI = (SipURI) reqAck.getRequestURI(); + requestURI.setHost(event.getRemoteIpAddress()); + requestURI.setPort(event.getRemotePort()); + reqAck.setRequestURI(requestURI); + System.out.println("鍚� " + event.getRemoteIpAddress() + ":" + event.getRemotePort() + "鍥炲ack"); + dialog.sendAck(reqAck); + } } catch (InvalidArgumentException | SipException e) { e.printStackTrace(); } -- Gitblit v1.8.0