From 29710b7cc154191ae56acf6af32ec70241886e78 Mon Sep 17 00:00:00 2001 From: swwheihei <swwheihei@163.com> Date: 星期四, 16 七月 2020 16:09:48 +0800 Subject: [PATCH] Merge branch 'master' of https://github.com/swwheihei/wvp.git --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/response/impl/InviteResponseProcessor.java | 94 ++++++++++++++++++++++++++++------------------- 1 files changed, 56 insertions(+), 38 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 9bc67d2..669b360 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 @@ -2,7 +2,6 @@ import java.text.ParseException; -import javax.sip.ClientTransaction; import javax.sip.Dialog; import javax.sip.InvalidArgumentException; import javax.sip.ResponseEvent; @@ -22,57 +21,76 @@ import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorFactory; import com.genersoft.iot.vmp.gb28181.transmit.response.ISIPResponseProcessor; -/** - * @Description:澶勭悊INVITE鍝嶅簲 - * @author: swwheihei - * @date: 2020骞�5鏈�3鏃� 涓嬪崍4:43:52 + +/** + * @Description:澶勭悊INVITE鍝嶅簲 + * @author: songww + * @date: 2020骞�5鏈�3鏃� 涓嬪崍4:43:52 */ @Component public class InviteResponseProcessor implements ISIPResponseProcessor { private final static Logger logger = LoggerFactory.getLogger(SIPProcessorFactory.class); - + /** * 澶勭悊invite鍝嶅簲 * - * @param evt - * 鍝嶅簲娑堟伅 - */ + * @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 { Response response = evt.getResponse(); int statusCode = response.getStatusCode(); - //trying涓嶄細鍥炲 - if(statusCode == Response.TRYING){ - + // trying涓嶄細鍥炲 + if (statusCode == Response.TRYING) { } - //鎴愬姛鍝嶅簲 - //涓嬪彂ack - if(statusCode == Response.OK){ -// ClientTransaction clientTransaction = evt.getClientTransaction(); -// if(clientTransaction == null){ -// logger.error("鍥炲ACK鏃讹紝clientTransaction涓簄ull >>> {}",response); -// return; -// } -// Dialog clientDialog = clientTransaction.getDialog(); -// -// CSeqHeader clientCSeqHeader = (CSeqHeader) response.getHeader(CSeqHeader.NAME); -// long cseqId = clientCSeqHeader.getSeqNumber(); -// /* -// createAck鍑芥暟锛屽垱寤虹殑ackRequest锛屼細閲囩敤Invite鍝嶅簲鐨�200OK锛屼腑鐨刢ontact瀛楁涓殑鍦板潃锛屼綔涓虹洰鏍囧湴鍧�銆� -// 鏈夌殑缁堢浼犱笂鏉ョ殑鍙兘杩樻槸鍐呯綉鍦板潃锛屼細閫犳垚ack鍙戦�佷笉鍑哄幓銆傛帴鍙椾笉鍒伴煶瑙嗛娴� -// 鎵�浠ュ湪姝ゅ缁熶竴鏇挎崲鍦板潃銆傚拰鍝嶅簲娑堟伅鐨刅ia澶翠腑鐨勫湴鍧�淇濇寔涓�鑷淬�� -// */ -// Request ackRequest = clientDialog.createAck(cseqId); -// SipURI requestURI = (SipURI) ackRequest.getRequestURI(); -// ViaHeader viaHeader = (ViaHeader) response.getHeader(ViaHeader.NAME); -// requestURI.setHost(viaHeader.getHost()); -// requestURI.setPort(viaHeader.getPort()); -// clientDialog.sendAck(ackRequest); - + // 鎴愬姛鍝嶅簲 + // 涓嬪彂ack + if (statusCode == Response.OK) { + // ClientTransaction clientTransaction = evt.getClientTransaction(); + // if(clientTransaction == null){ + // logger.error("鍥炲ACK鏃讹紝clientTransaction涓簄ull >>> {}",response); + // return; + // } + // Dialog clientDialog = clientTransaction.getDialog(); + + // CSeqHeader clientCSeqHeader = (CSeqHeader) + // response.getHeader(CSeqHeader.NAME); + // long cseqId = clientCSeqHeader.getSeqNumber(); + // /* + // createAck鍑芥暟锛屽垱寤虹殑ackRequest锛屼細閲囩敤Invite鍝嶅簲鐨�200OK锛屼腑鐨刢ontact瀛楁涓殑鍦板潃锛屼綔涓虹洰鏍囧湴鍧�銆� + // 鏈夌殑缁堢浼犱笂鏉ョ殑鍙兘杩樻槸鍐呯綉鍦板潃锛屼細閫犳垚ack鍙戦�佷笉鍑哄幓銆傛帴鍙椾笉鍒伴煶瑙嗛娴� + // 鎵�浠ュ湪姝ゅ缁熶竴鏇挎崲鍦板潃銆傚拰鍝嶅簲娑堟伅鐨刅ia澶翠腑鐨勫湴鍧�淇濇寔涓�鑷淬�� + // */ + // Request ackRequest = clientDialog.createAck(cseqId); + // SipURI requestURI = (SipURI) ackRequest.getRequestURI(); + // ViaHeader viaHeader = (ViaHeader) response.getHeader(ViaHeader.NAME); + // try { + // requestURI.setHost(viaHeader.getHost()); + // } catch (Exception e) { + // e.printStackTrace(); + // } + // requestURI.setPort(viaHeader.getPort()); + // clientDialog.sendAck(ackRequest); + Dialog dialog = evt.getDialog(); - Request reqAck =dialog.createAck(1L); + CSeqHeader cseq = (CSeqHeader) response.getHeader(CSeqHeader.NAME); + Request reqAck = dialog.createAck(cseq.getSeqNumber()); + + SipURI requestURI = (SipURI) reqAck.getRequestURI(); + ViaHeader viaHeader = (ViaHeader) response.getHeader(ViaHeader.NAME); + // String viaHost =viaHeader.getHost(); + //getHost()鍑芥暟鍙栧洖鐨処P鍦板潃鏄�淸xxx.xxx.xxx.xxx:yyyy]鈥濈殑鏍煎紡锛岄渶鐢ㄦ鍒欒〃杈惧紡鎴彇涓衡�渪xx.xxx.xxx.xxx"鏍煎紡 + // Pattern p = Pattern.compile("(?<=//|)((\\w)+\\.)+\\w+"); + // Matcher matcher = p.matcher(viaHeader.getHost()); + // if (matcher.find()) { + // requestURI.setHost(matcher.group()); + // } + requestURI.setHost(viaHeader.getHost()); + requestURI.setPort(viaHeader.getPort()); + reqAck.setRequestURI(requestURI); dialog.sendAck(reqAck); } } catch (InvalidArgumentException | SipException e) { -- Gitblit v1.8.0