From 70c20364af15fce16992fce499efc623823ce221 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 22 九月 2022 14:10:26 +0800
Subject: [PATCH] 修复流注销时移除流认证信息
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java | 244 +++++++++++++++++++++---------------------------
1 files changed, 109 insertions(+), 135 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
index d078cb1..a15940d 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -1,9 +1,11 @@
package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
+import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider;
+import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
import com.genersoft.iot.vmp.storager.dao.dto.PlatformRegisterInfo;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
@@ -26,19 +28,16 @@
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
import javax.sip.*;
import javax.sip.address.SipURI;
import javax.sip.header.*;
import javax.sip.message.Request;
import java.lang.reflect.Field;
-import java.net.InetAddress;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.UUID;
@Component
@DependsOn("sipLayer")
@@ -47,7 +46,7 @@
private final Logger logger = LoggerFactory.getLogger(SIPCommanderFroPlatform.class);
@Autowired
- private SIPRequestHeaderPlarformProvider headerProviderPlarformProvider;
+ private SIPRequestHeaderPlarformProvider headerProviderPlatformProvider;
@Autowired
private IRedisCatchStorage redisCatchStorage;
@@ -74,6 +73,9 @@
@Autowired
private SipFactory sipFactory;
+ @Autowired
+ private SubscribeHolder subscribeHolder;
+
@Override
public boolean register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) {
return register(parentPlatform, null, null, errorEvent, okEvent, false, true);
@@ -89,7 +91,6 @@
SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) {
try {
Request request;
- String tm = Long.toString(System.currentTimeMillis());
if (!registerAgain ) {
CallIdHeader callIdHeader = null;
if(parentPlatform.getTransport().equalsIgnoreCase("TCP")) {
@@ -99,9 +100,9 @@
callIdHeader = udpSipProvider.getNewCallId();
}
- request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform,
- redisCatchStorage.getCSEQ(), "FromRegister" + tm,
- "z9hG4bK-" + UUID.randomUUID().toString().replace("-", ""), callIdHeader, isRegister);
+ request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform,
+ redisCatchStorage.getCSEQ(), SipUtils.getNewFromTag(),
+ SipUtils.getNewViaTag(), callIdHeader, isRegister);
// 灏� callid 鍐欏叆缂撳瓨锛� 绛夋敞鍐屾垚鍔熷彲浠ユ洿鏂扮姸鎬�
String callIdFromHeader = callIdHeader.getCallId();
redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister));
@@ -121,7 +122,7 @@
}else {
CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
: udpSipProvider.getNewCallId();
- request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, "FromRegister" + tm, null, callId, www, callIdHeader, isRegister);
+ request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, SipUtils.getNewFromTag(), null, callId, www, callIdHeader, isRegister);
}
transmitRequest(parentPlatform, request, null, okEvent);
@@ -155,12 +156,11 @@
CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
: udpSipProvider.getNewCallId();
- Request request = headerProviderPlarformProvider.createKeetpaliveMessageRequest(
+ Request request = headerProviderPlatformProvider.createMessageRequest(
parentPlatform,
keepaliveXml.toString(),
- "z9hG4bK-" + UUID.randomUUID().toString().replace("-", ""),
- UUID.randomUUID().toString().replace("-", ""),
- null,
+ SipUtils.getNewFromTag(),
+ SipUtils.getNewViaTag(),
callIdHeader);
transmitRequest(parentPlatform, request, errorEvent, okEvent);
callId = callIdHeader.getCallId();
@@ -222,7 +222,7 @@
CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
: udpSipProvider.getNewCallId();
- Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, callIdHeader);
+ Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
transmitRequest(parentPlatform, request);
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -262,26 +262,34 @@
if (channel.getParentId() != null) {
// 涓氬姟鍒嗙粍鍔犱笂杩欎竴椤瑰嵆鍙紝鎻愰珮鍏煎鎬э紝
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
+// catalogXml.append("<ParentID>" + parentPlatform.getDeviceGBId() + "/" + channel.getParentId() + "</ParentID>\r\n");
}
if (channel.getChannelId().length() == 20 && Integer.parseInt(channel.getChannelId().substring(10, 13)) == 216) {
// 铏氭嫙缁勭粐澧炲姞BusinessGroupID瀛楁
catalogXml.append("<BusinessGroupID>" + channel.getParentId() + "</BusinessGroupID>\r\n");
}
- catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
+ if (!channel.getChannelId().equals(parentPlatform.getDeviceGBId())) {
+ catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
+ if (channel.getParental() == 0) {
+ catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
+ }
+ }
if (channel.getParental() == 0) {
// 閫氶亾椤�
catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
- catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
-
+ String civilCode = channel.getCivilCode() == null?parentPlatform.getAdministrativeDivision() : channel.getCivilCode();
if (channel.getChannelType() != 2) { // 涓氬姟鍒嗙粍/铏氭嫙缁勭粐/琛屾斂鍖哄垝 涓嶈缃互涓嬪睘鎬�
catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
- catalogXml.append("<Owner> " + channel.getOwner()+ "</Owner>\r\n");
- catalogXml.append("<CivilCode>" + channel.getCivilCode() + "</CivilCode>\r\n");
- catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
+ catalogXml.append("<Owner>" + parentPlatform.getDeviceGBId()+ "</Owner>\r\n");
+ catalogXml.append("<CivilCode>" + civilCode + "</CivilCode>\r\n");
+ if (channel.getAddress() == null) {
+ catalogXml.append("<Address></Address>\r\n");
+ }else {
+ catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
+ }
}
-
}
catalogXml.append("</Item>\r\n");
}
@@ -308,7 +316,7 @@
CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
: udpSipProvider.getNewCallId();
- Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, callIdHeader);
+ Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, SipUtils.getNewViaTag(), callIdHeader);
transmitRequest(parentPlatform, request, null, eventResult -> {
int indexNext = index + parentPlatform.getCatalogGroup();
sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext);
@@ -348,7 +356,7 @@
CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
: udpSipProvider.getNewCallId();
- Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, callIdHeader);
+ Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
transmitRequest(parentPlatform, request);
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -386,7 +394,7 @@
CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
: udpSipProvider.getNewCallId();
- Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, callIdHeader);
+ Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
transmitRequest(parentPlatform, request);
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -421,11 +429,7 @@
deviceStatusXml.append("<Altitude>" + gpsMsgInfo.getAltitude() + "</Altitude>\r\n");
deviceStatusXml.append("</Notify>\r\n");
- CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
- : udpSipProvider.getNewCallId();
- callIdHeader.setCallId(subscribeInfo.getCallId());
-
- sendNotify(parentPlatform, deviceStatusXml.toString(), subscribeInfo, eventResult -> {
+ sendNotify(parentPlatform, deviceStatusXml.toString(), subscribeInfo, eventResult -> {
logger.error("鍙戦�丯OTIFY閫氱煡娑堟伅澶辫触銆傞敊璇細{} {}", eventResult.statusCode, eventResult.msg);
}, null);
@@ -436,6 +440,8 @@
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
+ } catch (InvalidArgumentException e) {
+ e.printStackTrace();
}
return true;
}
@@ -445,8 +451,8 @@
if (parentPlatform == null) {
return false;
}
- logger.info("[鍙戦�� 鎶ヨ璁㈤槄] {}/{}->{},{}", parentPlatform.getServerGBId(), deviceAlarm.getChannelId(),
- deviceAlarm.getLongitude(), deviceAlarm.getLatitude());
+ logger.info("[鍙戦�佹姤璀﹂�氱煡] {}/{}->{},{}: {}", parentPlatform.getServerGBId(), deviceAlarm.getChannelId(),
+ deviceAlarm.getLongitude(), deviceAlarm.getLatitude(), JSONObject.toJSON(deviceAlarm));
try {
String characterSet = parentPlatform.getCharacterSet();
StringBuffer deviceStatusXml = new StringBuffer(600);
@@ -469,15 +475,14 @@
CallIdHeader callIdHeader = parentPlatform.getTransport().equalsIgnoreCase("TCP") ? tcpSipProvider.getNewCallId()
: udpSipProvider.getNewCallId();
- String tm = Long.toString(System.currentTimeMillis());
- Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), "FromPtz" + tm, callIdHeader);
+ Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), SipUtils.getNewFromTag(), SipUtils.getNewViaTag(), callIdHeader);
transmitRequest(parentPlatform, request);
} catch (SipException | ParseException e) {
e.printStackTrace();
return false;
} catch (InvalidArgumentException e) {
- throw new RuntimeException(e);
+ e.printStackTrace();
}
return true;
}
@@ -516,22 +521,24 @@
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
+ } catch (InvalidArgumentException e) {
+ e.printStackTrace();
}
return true;
}
- private void sendNotify(ParentPlatform parentPlatform, String catalogXmlContent,
+ private ClientTransaction sendNotify(ParentPlatform parentPlatform, String catalogXmlContent,
SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent )
- throws NoSuchFieldException, IllegalAccessException, SipException, ParseException {
+ throws NoSuchFieldException, IllegalAccessException, SipException, ParseException, InvalidArgumentException {
MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipFactory.createMessageFactory();
String characterSet = parentPlatform.getCharacterSet();
// 璁剧疆缂栫爜锛� 闃叉涓枃涔辩爜
messageFactory.setDefaultContentEncodingCharset(characterSet);
- Dialog dialog = subscribeInfo.getDialog();
- if (dialog == null || !dialog.getState().equals(DialogState.CONFIRMED)) {
- return;
- }
- SIPRequest notifyRequest = (SIPRequest)dialog.createRequest(Request.NOTIFY);
+
+ SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo);
+
+ notifyRequest.getCSeqHeader().setSeqNumber(redisCatchStorage.getCSEQ());
+
ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
notifyRequest.setContent(catalogXmlContent, contentTypeHeader);
@@ -548,26 +555,32 @@
sipURI.setHost(parentPlatform.getServerIP());
sipURI.setPort(parentPlatform.getServerPort());
+// ClientTransaction transaction = subscribeInfo.getClientTransaction();
+// if (transaction == null || transaction.getState().equals(TransactionState.COMPLETED)) {
+// if ("TCP".equals(parentPlatform.getTransport())) {
+// transaction = tcpSipProvider.getNewClientTransaction(notifyRequest);
+// } else if ("UDP".equals(parentPlatform.getTransport())) {
+// transaction = udpSipProvider.getNewClientTransaction(notifyRequest);
+// }
+// }
+
ClientTransaction transaction = null;
if ("TCP".equals(parentPlatform.getTransport())) {
transaction = tcpSipProvider.getNewClientTransaction(notifyRequest);
} else if ("UDP".equals(parentPlatform.getTransport())) {
transaction = udpSipProvider.getNewClientTransaction(notifyRequest);
}
+
// 娣诲姞閿欒璁㈤槄
if (errorEvent != null) {
- sipSubscribe.addErrorSubscribe(subscribeInfo.getCallId(), errorEvent);
+ sipSubscribe.addErrorSubscribe(subscribeInfo.getRequest().getCallIdHeader().getCallId(), errorEvent);
}
// 娣诲姞璁㈤槄
if (okEvent != null) {
- sipSubscribe.addOkSubscribe(subscribeInfo.getCallId(), okEvent);
+ sipSubscribe.addOkSubscribe(subscribeInfo.getRequest().getCallIdHeader().getCallId(), okEvent);
}
- if (transaction == null) {
- logger.error("骞冲彴{}鐨凾ransport閿欒锛歿}",parentPlatform.getServerGBId(), parentPlatform.getTransport());
- return;
- }
- dialog.sendRequest(transaction);
-
+ transaction.sendRequest();
+ return transaction;
}
private String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, List<DeviceChannel> channels, int sumNum, String type, SubscribeInfo subscribeInfo) {
@@ -664,6 +677,8 @@
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
+ } catch (InvalidArgumentException e) {
+ e.printStackTrace();
}
return true;
@@ -741,7 +756,7 @@
// callid
CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
: udpSipProvider.getNewCallId();
- Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, callIdHeader);
+ Request request = headerProviderPlatformProvider.createMessageRequest(parentPlatform, recordXml.toString(), fromTag, SipUtils.getNewViaTag(), callIdHeader);
transmitRequest(parentPlatform, request);
} catch (SipException | ParseException | InvalidArgumentException e) {
@@ -760,36 +775,8 @@
return false;
}
- byte[] dialogByteArray = sendRtpItem.getDialog();
- if (dialogByteArray == null) {
- return false;
- }
try{
- SIPDialog dialog = (SIPDialog) SerializeUtils.deSerialize(dialogByteArray);
- SipStack sipStack;
- if ("TCP".equals(platform.getTransport())) {
- sipStack = tcpSipProvider.getSipStack();
- } else {
- sipStack = udpSipProvider.getSipStack();
- }
- SIPDialog sipDialog = ((SipStackImpl) sipStack).putDialog(dialog);
- if (dialog != sipDialog) {
- dialog = sipDialog;
- }
- if ("TCP".equals(platform.getTransport())) {
- dialog.setSipProvider(tcpSipProvider);
- } else {
- dialog.setSipProvider(udpSipProvider);
- }
- Field sipStackField = SIPDialog.class.getDeclaredField("sipStack");
- sipStackField.setAccessible(true);
- sipStackField.set(dialog, sipStack);
- Field eventListenersField = SIPDialog.class.getDeclaredField("eventListeners");
- eventListenersField.setAccessible(true);
- eventListenersField.set(dialog, new HashSet<>());
-
- SIPRequest messageRequest = (SIPRequest)dialog.createRequest(Request.MESSAGE);
String characterSet = platform.getCharacterSet();
StringBuffer mediaStatusXml = new StringBuffer(200);
mediaStatusXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
@@ -799,6 +786,10 @@
mediaStatusXml.append("<DeviceID>" + sendRtpItem.getChannelId() + "</DeviceID>\r\n");
mediaStatusXml.append("<NotifyType>121</NotifyType>\r\n");
mediaStatusXml.append("</Notify>\r\n");
+
+ SIPRequest messageRequest = (SIPRequest)headerProviderPlatformProvider.createMessageRequest(platform, mediaStatusXml.toString(),
+ sendRtpItem);
+
ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
messageRequest.setContent(mediaStatusXml.toString(), contentTypeHeader);
SipURI sipURI = (SipURI) messageRequest.getRequestURI();
@@ -810,16 +801,14 @@
}else {
clientTransaction = udpSipProvider.getNewClientTransaction(messageRequest);
}
- dialog.sendRequest(clientTransaction);
+ clientTransaction.sendRequest();
} catch (SipException e) {
e.printStackTrace();
return false;
} catch (ParseException e) {
e.printStackTrace();
return false;
- } catch (NoSuchFieldException e) {
- throw new RuntimeException(e);
- } catch (IllegalAccessException e) {
+ } catch (InvalidArgumentException e) {
throw new RuntimeException(e);
}
return true;
@@ -834,61 +823,46 @@
}
SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(platform.getServerGBId(), null, null, callId);
if (sendRtpItem != null) {
- String mediaServerId = sendRtpItem.getMediaServerId();
- MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
- if (mediaServerItem != null) {
- mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrc());
- zlmrtpServerFactory.closeRTPServer(mediaServerItem, sendRtpItem.getStreamId());
+ streamByeCmd(platform, sendRtpItem);
+ }
+ }
+
+ @Override
+ public void streamByeCmd(ParentPlatform platform, SendRtpItem sendRtpItem) {
+ if (sendRtpItem == null ) {
+ logger.info("[鍚戜笂绾у彂閫丅YE]锛� sendRtpItem 涓篘ULL");
+ return;
+ }
+ if (platform == null) {
+ logger.info("[鍚戜笂绾у彂閫丅YE]锛� platform 涓篘ULL");
+ return;
+ }
+ logger.info("[鍚戜笂绾у彂閫丅YE]锛� {}/{}", platform.getServerGBId(), sendRtpItem.getChannelId());
+ String mediaServerId = sendRtpItem.getMediaServerId();
+ MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
+ if (mediaServerItem != null) {
+ mediaServerService.releaseSsrc(mediaServerItem.getId(), sendRtpItem.getSsrc());
+ zlmrtpServerFactory.closeRTPServer(mediaServerItem, sendRtpItem.getStreamId());
+ }
+ try {
+
+ SIPRequest byeRequest = headerProviderPlatformProvider.createByeRequest(platform, sendRtpItem);
+ if (byeRequest == null) {
+ logger.warn("[鍚戜笂绾у彂閫乥ye]锛氭棤娉曞垱寤� byeRequest");
}
- byte[] dialogByteArray = sendRtpItem.getDialog();
- if (dialogByteArray != null) {
- SIPDialog dialog = (SIPDialog) SerializeUtils.deSerialize(dialogByteArray);
- SipStack sipStack;
- if ("TCP".equals(platform.getTransport())) {
- sipStack = tcpSipProvider.getSipStack();
- } else {
- sipStack = udpSipProvider.getSipStack();
- }
- SIPDialog sipDialog = ((SipStackImpl) sipStack).putDialog(dialog);
- if (dialog != sipDialog) {
- dialog = sipDialog;
- }
- try {
- if ("TCP".equals(platform.getTransport())) {
- dialog.setSipProvider(tcpSipProvider);
- } else {
- dialog.setSipProvider(udpSipProvider);
- }
- Field sipStackField = SIPDialog.class.getDeclaredField("sipStack");
- sipStackField.setAccessible(true);
- sipStackField.set(dialog, sipStack);
- Field eventListenersField = SIPDialog.class.getDeclaredField("eventListeners");
- eventListenersField.setAccessible(true);
- eventListenersField.set(dialog, new HashSet<>());
-
- Request byeRequest = dialog.createRequest(Request.BYE);
-
- SipURI byeURI = (SipURI) byeRequest.getRequestURI();
- byeURI.setHost(platform.getServerIP());
- byeURI.setPort(platform.getServerPort());
- ClientTransaction clientTransaction;
- if ("TCP".equals(platform.getTransport())) {
- clientTransaction = tcpSipProvider.getNewClientTransaction(byeRequest);
- } else {
- clientTransaction = udpSipProvider.getNewClientTransaction(byeRequest);
- }
- dialog.sendRequest(clientTransaction);
- } catch (SipException e) {
- e.printStackTrace();
- } catch (ParseException e) {
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
-
+ ClientTransaction clientTransaction;
+ if ("TCP".equals(platform.getTransport())) {
+ clientTransaction = tcpSipProvider.getNewClientTransaction(byeRequest);
+ } else {
+ clientTransaction = udpSipProvider.getNewClientTransaction(byeRequest);
}
+ clientTransaction.sendRequest();
+ } catch (SipException e) {
+ e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ } catch (InvalidArgumentException e) {
+ throw new RuntimeException(e);
}
}
}
--
Gitblit v1.8.0