mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-06-04 11:29:45 +00:00
feat(telemost): Implement multiplexer reset and send function updates on reconnect
This commit is contained in:
@@ -66,6 +66,14 @@ func Run(roomURL, keyHex string, socksPort int) error {
|
||||
|
||||
peer.SetReconnectCallback(func(dc *webrtc.DataChannel) {
|
||||
log.Println("Updating DataChannel after reconnect")
|
||||
c.mux.Reset()
|
||||
c.mux.UpdateSendFunc(func(frame []byte) error {
|
||||
encrypted, err := c.cipher.Encrypt(frame)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return dc.Send(encrypted)
|
||||
})
|
||||
})
|
||||
|
||||
log.Println("Connecting to Telemost...")
|
||||
|
||||
@@ -151,3 +151,18 @@ func (m *Multiplexer) GetStreams() []uint16 {
|
||||
}
|
||||
return sids
|
||||
}
|
||||
|
||||
func (m *Multiplexer) Reset() {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
m.streams = make(map[uint16]*Stream)
|
||||
m.nextID = 1
|
||||
}
|
||||
|
||||
func (m *Multiplexer) UpdateSendFunc(onSend func([]byte) error) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
m.onSend = onSend
|
||||
}
|
||||
|
||||
@@ -73,6 +73,14 @@ func Run(roomURL, keyHex string) error {
|
||||
|
||||
peer.SetReconnectCallback(func(dc *webrtc.DataChannel) {
|
||||
log.Println("Updating DataChannel after reconnect")
|
||||
s.mux.Reset()
|
||||
s.mux.UpdateSendFunc(func(frame []byte) error {
|
||||
encrypted, err := s.cipher.Encrypt(frame)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return dc.Send(encrypted)
|
||||
})
|
||||
})
|
||||
|
||||
log.Println("Connecting to Telemost...")
|
||||
|
||||
Reference in New Issue
Block a user