Fix concurrency on the client (#183)

* reworked peer connection establishment logic eliminating race conditions and deadlocks while running many peers
This commit is contained in:
Mikhail Bragin
2022-01-10 18:43:13 +01:00
committed by GitHub
parent 828410b34c
commit 319632ffe8
25 changed files with 1216 additions and 898 deletions
+11 -23
View File
@@ -14,6 +14,7 @@ import (
const (
key = "0PMI6OkB5JmB+Jj/iWWHekuQRx+bipZirWCWKFXexHc="
peerPubKey = "Ok0mC0qlJyXEPKh2UFIpsI2jG0L7LRpC3sLAusSJ5CQ="
WgPort = 51820
)
func init() {
@@ -29,7 +30,7 @@ func Test_CreateInterface(t *testing.T) {
t.Fatal(err)
}
defer func() {
err = Close()
err = Close(ifaceName)
if err != nil {
t.Error(err)
}
@@ -44,13 +45,6 @@ func Test_CreateInterface(t *testing.T) {
t.Error(err)
}
}()
d, err := wg.Device(ifaceName)
if err != nil {
t.Fatal(err)
}
// todo move the WgPort constant to the client
WgPort = d.ListenPort
}
func Test_ConfigureInterface(t *testing.T) {
ifaceName := "utun1000"
@@ -60,13 +54,13 @@ func Test_ConfigureInterface(t *testing.T) {
t.Fatal(err)
}
defer func() {
err = Close()
err = Close(ifaceName)
if err != nil {
t.Error(err)
}
}()
err = Configure(ifaceName, key)
err = Configure(ifaceName, key, WgPort)
if err != nil {
t.Fatal(err)
}
@@ -99,12 +93,12 @@ func Test_UpdatePeer(t *testing.T) {
t.Fatal(err)
}
defer func() {
err = Close()
err = Close(ifaceName)
if err != nil {
t.Error(err)
}
}()
err = Configure(ifaceName, key)
err = Configure(ifaceName, key, WgPort)
if err != nil {
t.Fatal(err)
}
@@ -151,12 +145,12 @@ func Test_UpdatePeerEndpoint(t *testing.T) {
t.Fatal(err)
}
defer func() {
err = Close()
err = Close(ifaceName)
if err != nil {
t.Error(err)
}
}()
err = Configure(ifaceName, key)
err = Configure(ifaceName, key, WgPort)
if err != nil {
t.Fatal(err)
}
@@ -192,12 +186,12 @@ func Test_RemovePeer(t *testing.T) {
t.Fatal(err)
}
defer func() {
err = Close()
err = Close(ifaceName)
if err != nil {
t.Error(err)
}
}()
err = Configure(ifaceName, key)
err = Configure(ifaceName, key, WgPort)
if err != nil {
t.Fatal(err)
}
@@ -235,13 +229,7 @@ func Test_Close(t *testing.T) {
}
}()
d, err := wg.Device(ifaceName)
if err != nil {
t.Fatal(err)
}
// todo move the WgPort constant to the client
WgPort = d.ListenPort
err = Close()
err = Close(ifaceName)
if err != nil {
t.Fatal(err)
}