Skip to content

Commit e56f663

Browse files
committed
error を SoraError.dataChannelClosed にラップするタイミングを修正する
1 parent 6b565cd commit e56f663

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

Sora/PeerChannel.swift

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ class PeerChannel: NSObject, RTCPeerConnectionDelegate {
985985

986986
func handleSignalingOverDataChannel(_ signaling: Signaling) {
987987
Logger.debug(
988-
type: .mediaStream,
988+
type: .peerChannel,
989989
message: "handle signaling over DataChannel => \(signaling.typeName())")
990990
switch signaling {
991991
case .reOffer(let reOffer):
@@ -1050,31 +1050,33 @@ class PeerChannel: NSObject, RTCPeerConnectionDelegate {
10501050

10511051
nativeChannel?.close()
10521052

1053-
signalingChannel.disconnect(error: error, reason: reason)
1054-
1055-
Logger.debug(type: .peerChannel, message: "call onDisconnect")
1056-
/// DataChannel がクローズされ (reason == .dataChannelClosed)、
1057-
/// かつ事前に Sora から "close" メッセージを受信していた場合 (dataChannelSignalingClose != nil)、
1058-
/// MediaChannel にそのメッセージ内容を dataChannelClosed として通知する
1053+
var error = error
1054+
// DataChannel が正常にクローズされ (reason == .dataChannelClosed)、
1055+
// かつ事前に Sora から "close" メッセージを受信していた場合 (dataChannelSignalingClose != nil)、
1056+
// error を SoraError.dataChannelClosed にする
10591057
if let dataChannelSignalingClose = dataChannelSignalingClose,
10601058
case .dataChannelClosed = reason
10611059
{
1062-
internalHandlers.onDisconnect?(
1063-
SoraError.dataChannelClosed(
1064-
statusCode: dataChannelSignalingClose.code, reason: dataChannelSignalingClose.reason),
1065-
reason)
1066-
} else {
1067-
internalHandlers.onDisconnect?(error, reason)
1060+
error = SoraError.dataChannelClosed(
1061+
statusCode: dataChannelSignalingClose.code, reason: dataChannelSignalingClose.reason
1062+
)
10681063
}
1069-
// disconnect したあとは基本的に PeerChannel を使い回さないはずだが、一応 nil にしておく
1070-
dataChannelSignalingClose = nil
1064+
1065+
// TODO(zztkm): signalingChannel.ignoreDisconnectWebSocket が true の場合はこの処理は不要かもしれない
1066+
signalingChannel.disconnect(error: error, reason: reason)
1067+
1068+
Logger.debug(type: .peerChannel, message: "call onDisconnect")
1069+
internalHandlers.onDisconnect?(error, reason)
10711070

10721071
if onConnect != nil {
10731072
Logger.debug(type: .peerChannel, message: "call connect(handler:)")
10741073
onConnect!(error)
10751074
onConnect = nil
10761075
}
10771076

1077+
// disconnect したあとは基本的に PeerChannel を使い回さないはずだが、一応 nil にしておく
1078+
dataChannelSignalingClose = nil
1079+
10781080
Logger.debug(type: .peerChannel, message: "did disconnect")
10791081
}
10801082

0 commit comments

Comments
 (0)