Browse Source

Use sync.RWMutex for VXLANUDPPort

Looks like concurrent reads should be possible, so use
a RWMutex instead of Mutex.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sebastiaan van Stijn 6 years ago
parent
commit
38c8a3f84d
1 changed files with 5 additions and 6 deletions
  1. 5 6
      libnetwork/drivers/overlay/overlayutils/utils.go

+ 5 - 6
libnetwork/drivers/overlay/overlayutils/utils.go

@@ -7,8 +7,8 @@ import (
 )
 
 var (
+	mutex        sync.RWMutex
 	vxlanUDPPort uint32
-	mutex        sync.Mutex
 )
 
 const defaultVXLANUDPPort = 4789
@@ -19,8 +19,6 @@ func init() {
 
 // ConfigVXLANUDPPort configures vxlan udp port number.
 func ConfigVXLANUDPPort(vxlanPort uint32) error {
-	mutex.Lock()
-	defer mutex.Unlock()
 	// if the value comes as 0 by any reason we set it to default value 4789
 	if vxlanPort == 0 {
 		vxlanPort = defaultVXLANUDPPort
@@ -33,14 +31,15 @@ func ConfigVXLANUDPPort(vxlanPort uint32) error {
 	if vxlanPort < 1024 || vxlanPort > 49151 {
 		return fmt.Errorf("ConfigVxlanUDPPort Vxlan UDP port number is not in valid range %d", vxlanPort)
 	}
+	mutex.Lock()
 	vxlanUDPPort = vxlanPort
-
+	mutex.Unlock()
 	return nil
 }
 
 // VXLANUDPPort returns Vxlan UDP port number
 func VXLANUDPPort() uint32 {
-	mutex.Lock()
-	defer mutex.Unlock()
+	mutex.RLock()
+	defer mutex.RUnlock()
 	return vxlanUDPPort
 }