This PR fixes various tunnel race conditions

This commit is contained in:
Milos Gajdos
2019-12-05 15:50:32 +00:00
parent 18cf025056
commit 5db7514a91
5 changed files with 78 additions and 62 deletions

View File

@@ -229,7 +229,10 @@ func (l *link) manage() {
// check the type of message
switch {
case bytes.Equal(p.message.Body, linkRequest):
l.RLock()
log.Tracef("Link %s received link request %v", l.id, p.message.Body)
l.RUnlock()
// send response
if err := send(linkResponse); err != nil {
l.Lock()
@@ -239,7 +242,10 @@ func (l *link) manage() {
case bytes.Equal(p.message.Body, linkResponse):
// set round trip time
d := time.Since(now)
l.RLock()
log.Tracef("Link %s received link response in %v", p.message.Body, d)
l.RUnlock()
// set the RTT
l.setRTT(d)
}
case <-t.C: