Skip to content

Commit

Permalink
Fix TURN credentials renewal (#394)
Browse files Browse the repository at this point in the history
Update conn config with new TURN credentials

Updated Signal connection timeout to 5s
  • Loading branch information
braginini authored Jul 21, 2022
1 parent a3c5fa1 commit 275d364
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 3 deletions.
9 changes: 8 additions & 1 deletion client/internal/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,7 @@ func (e *Engine) addNewPeer(peerConfig *mgmProto.RemotePeerConfig) error {
return nil
}

func (e Engine) connWorker(conn *peer.Conn, peerKey string) {
func (e *Engine) connWorker(conn *peer.Conn, peerKey string) {
for {

// randomize starting time a bit
Expand All @@ -676,6 +676,13 @@ func (e Engine) connWorker(conn *peer.Conn, peerKey string) {
continue
}

// we might have received new STUN and TURN servers meanwhile, so update them
e.syncMsgMux.Lock()
conf := conn.GetConf()
conf.StunTurn = append(e.STUNs, e.TURNs...)
conn.UpdateConf(conf)
e.syncMsgMux.Unlock()

err := conn.Open()
if err != nil {
log.Debugf("connection to peer %s failed: %v", peerKey, err)
Expand Down
7 changes: 6 additions & 1 deletion client/internal/peer/conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ func (conn *Conn) GetConf() ConnConfig {
return conn.config
}

// UpdateConf updates the connection config
func (conn *Conn) UpdateConf(conf ConnConfig) {
conn.config = conf
}

// NewConn creates a new not opened Conn to the remote peer.
// To establish a connection run Conn.Open
func NewConn(config ConnConfig, statusRecorder *nbStatus.Status) (*Conn, error) {
Expand Down Expand Up @@ -415,7 +420,7 @@ func (conn *Conn) SetSignalCandidate(handler func(candidate ice.Candidate) error
// and then signals them to the remote peer
func (conn *Conn) onICECandidate(candidate ice.Candidate) {
if candidate != nil {
// log.Debugf("discovered local candidate %s", candidate.String())
log.Debugf("discovered local candidate %s", candidate.String())
go func() {
err := conn.signalCandidate(candidate)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion signal/client/grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func NewClient(ctx context.Context, addr string, key wgtypes.Key, tlsEnabled boo
transportOption = grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{}))
}

sigCtx, cancel := context.WithTimeout(ctx, time.Second*3)
sigCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
conn, err := grpc.DialContext(
sigCtx,
Expand Down

0 comments on commit 275d364

Please sign in to comment.