diff --git a/internal/data_channel.go b/internal/data_channel.go index a095d5d..0eba444 100644 --- a/internal/data_channel.go +++ b/internal/data_channel.go @@ -53,14 +53,15 @@ func (conn *DataChannel) OnError(f func(error)) { func (conn *DataChannel) Close() { // already closed? - if conn.dataChannel.ReadyState() == webrtc.DataChannelStateClosing || - conn.dataChannel.ReadyState() == webrtc.DataChannelStateClosed { - return + if conn.dataChannel.ReadyState() != webrtc.DataChannelStateClosing && + conn.dataChannel.ReadyState() != webrtc.DataChannelStateClosed { + conn.AbortRawDataTransmission(io.EOF) + conn.dataChannel.Close() } - conn.AbortRawDataTransmission(io.EOF) - conn.dataChannel.Close() - <-conn.closeWaitChannel + if conn.dataChannel.ReadyState() != webrtc.DataChannelStateClosed { + <-conn.closeWaitChannel + } } func (conn *DataChannel) triggerOpen() {