Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

fix: Loop Dial for reconnects #337

Merged
merged 5 commits into from
May 9, 2021
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Fix slow TURN dials
  • Loading branch information
kylecarbs committed May 9, 2021
commit c8b91882f44b54d69980e289592b804d1dbde461
12 changes: 12 additions & 0 deletions wsnet/rtc.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,18 @@ func newPeerConnection(servers []webrtc.ICEServer) (*webrtc.PeerConnection, erro
se := webrtc.SettingEngine{}
se.DetachDataChannels()
se.SetICETimeouts(time.Second*5, time.Second*5, time.Second*2)

// If one server is provided and we know it's TURN, we can set the
// relay acceptable so the connection starts immediately.
if len(servers) == 1 {
server := servers[0]
if server.Credential != nil && len(server.URLs) == 1 {
url, err := ice.ParseURL(server.URLs[0])
if err == nil && url.Proto == ice.ProtoTypeTCP {
se.SetRelayAcceptanceMinWait(0)
}
}
}
api := webrtc.NewAPI(webrtc.WithSettingEngine(se))

return api.NewPeerConnection(webrtc.Configuration{
Expand Down