|
|
@@ -40,6 +40,7 @@ import javax.sip.SipFactory;
|
|
|
import javax.sip.header.CallIdHeader;
|
|
|
import javax.sip.message.Request;
|
|
|
import java.text.ParseException;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* @description:设备能力接口,用于定义设备的控制、查询能力
|
|
|
@@ -612,18 +613,20 @@ public class SIPCommander implements ISIPCommander {
|
|
|
*/
|
|
|
@Override
|
|
|
public void streamByeCmd(Device device, String channelId, String stream, String callId, SipSubscribe.Event okEvent) throws InvalidArgumentException, SipException, ParseException, SsrcTransactionNotFoundException {
|
|
|
- SsrcTransaction ssrcTransaction = streamSession.getSsrcTransaction(device.getDeviceId(), channelId, callId, stream);
|
|
|
- if (ssrcTransaction == null) {
|
|
|
+ List<SsrcTransaction> ssrcTransactionList = streamSession.getSsrcTransactionForAll(device.getDeviceId(), channelId, callId, stream);
|
|
|
+ if (ssrcTransactionList == null || ssrcTransactionList.isEmpty()) {
|
|
|
throw new SsrcTransactionNotFoundException(device.getDeviceId(), channelId, callId, stream);
|
|
|
}
|
|
|
|
|
|
- mediaServerService.releaseSsrc(ssrcTransaction.getMediaServerId(), ssrcTransaction.getSsrc());
|
|
|
+ for (SsrcTransaction ssrcTransaction : ssrcTransactionList) {
|
|
|
+ mediaServerService.releaseSsrc(ssrcTransaction.getMediaServerId(), ssrcTransaction.getSsrc());
|
|
|
|
|
|
- mediaServerService.closeRTPServer(ssrcTransaction.getMediaServerId(), ssrcTransaction.getStream());
|
|
|
- streamSession.removeByCallId(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getCallId());
|
|
|
+ mediaServerService.closeRTPServer(ssrcTransaction.getMediaServerId(), ssrcTransaction.getStream());
|
|
|
+ streamSession.removeByCallId(ssrcTransaction.getDeviceId(), ssrcTransaction.getChannelId(), ssrcTransaction.getCallId());
|
|
|
|
|
|
- Request byteRequest = headerProvider.createByteRequest(device, channelId, ssrcTransaction.getSipTransactionInfo());
|
|
|
- sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), byteRequest, null, okEvent);
|
|
|
+ Request byteRequest = headerProvider.createByteRequest(device, channelId, ssrcTransaction.getSipTransactionInfo());
|
|
|
+ sipSender.transmitRequest(sipLayer.getLocalIp(device.getLocalIp()), byteRequest, null, okEvent);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|