Created
September 12, 2018 07:19
-
-
Save Sean-Der/77a1b2ee17177aad58332314948c9314 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/internal/network/manager.go b/internal/network/manager.go | |
| index f012216..c4a8cff 100644 | |
| --- a/internal/network/manager.go | |
| +++ b/internal/network/manager.go | |
| @@ -85,6 +85,9 @@ func NewManager(btg BufferTransportGenerator, dcet DataChannelEventHandler, ntf | |
| // AddURL takes an ICE Url, allocates any state and adds the candidate | |
| func (m *Manager) AddURL(url *ice.URL) error { | |
| + m.portsLock.Lock() | |
| + defer m.portsLock.Unlock() | |
| + | |
| switch url.Scheme { | |
| case ice.SchemeTypeSTUN: | |
| c, err := webrtcStun.Allocate(url) | |
| @@ -144,8 +147,8 @@ func (m *Manager) DTLSFingerprint() string { | |
| // SendRTP finds a connected port and sends the passed RTP packet | |
| func (m *Manager) SendRTP(packet *rtp.Packet) { | |
| - m.portsLock.Lock() | |
| - defer m.portsLock.Unlock() | |
| + m.portsLock.RLock() | |
| + defer m.portsLock.RUnlock() | |
| local, remote := m.IceAgent.SelectedPair() | |
| if local == nil || remote == nil { | |
| @@ -252,8 +255,8 @@ func (m *Manager) dataChannelOutboundHandler(raw []byte) { | |
| return | |
| } | |
| - m.portsLock.Lock() | |
| - defer m.portsLock.Unlock() | |
| + m.portsLock.RLock() | |
| + defer m.portsLock.RUnlock() | |
| p, err := m.port(local) | |
| if err != nil { | |
| fmt.Println("dataChannelOutboundHandler: no valid port for candidate, dropping packet") | |
| @@ -273,8 +276,8 @@ func (m *Manager) port(local *stun.TransportAddr) (*port, error) { | |
| } | |
| func (m *Manager) iceOutboundHandler(raw []byte, local *stun.TransportAddr, remote *net.UDPAddr) { | |
| - m.portsLock.Lock() | |
| - defer m.portsLock.Unlock() | |
| + m.portsLock.RLock() | |
| + defer m.portsLock.RUnlock() | |
| for _, p := range m.ports { | |
| if p.listeningAddr.Equal(local) { |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment