mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 11:15:07 +03:00 
			
		
		
		
	Thread safety for MTU API functions
This commit is contained in:
		
							parent
							
								
									e90be6f569
								
							
						
					
					
						commit
						d1c445dc41
					
				
					 2 changed files with 11 additions and 12 deletions
				
			
		| 
						 | 
					@ -365,18 +365,19 @@ func (c *Core) SetNodeInfo(nodeinfo interface{}, nodeinfoprivacy bool) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetMaximumSessionMTU returns the maximum allowed session MTU size.
 | 
					// GetMaximumSessionMTU returns the maximum allowed session MTU size.
 | 
				
			||||||
func (c *Core) GetMaximumSessionMTU(mtu uint16) uint16 {
 | 
					func (c *Core) GetMaximumSessionMTU(mtu uint16) uint16 {
 | 
				
			||||||
	return c.router.sessions.myMaximumMTU
 | 
						mtu := 0
 | 
				
			||||||
 | 
						phony.Block(c.router, func() {
 | 
				
			||||||
 | 
							mtu = c.router.sessions.myMaximumMTU
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						return mtu
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SetMaximumSessionMTU sets the maximum allowed session MTU size. The return
 | 
					// SetMaximumSessionMTU sets the maximum allowed session MTU size. The default
 | 
				
			||||||
// value contains the actual set value, since Yggdrasil will not accept MTUs
 | 
					// value is 65535 bytes.
 | 
				
			||||||
// below 1280 bytes. The default value is 65535 bytes.
 | 
					func (c *Core) SetMaximumSessionMTU(mtu uint16) {
 | 
				
			||||||
func (c *Core) SetMaximumSessionMTU(mtu uint16) uint16 {
 | 
						phony.Block(c.router, func() {
 | 
				
			||||||
	if mtu < 1280 {
 | 
					 | 
				
			||||||
		mtu = 1280
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
		c.router.sessions.myMaximumMTU = mtu
 | 
							c.router.sessions.myMaximumMTU = mtu
 | 
				
			||||||
	return mtu
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetNodeInfo requests nodeinfo from a remote node, as specified by the public
 | 
					// GetNodeInfo requests nodeinfo from a remote node, as specified by the public
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -189,8 +189,6 @@ func (ss *sessions) createSession(theirPermKey *crypto.BoxPubKey) *sessionInfo {
 | 
				
			||||||
	sinfo.mySesPriv = *priv
 | 
						sinfo.mySesPriv = *priv
 | 
				
			||||||
	sinfo.myNonce = *crypto.NewBoxNonce()
 | 
						sinfo.myNonce = *crypto.NewBoxNonce()
 | 
				
			||||||
	sinfo.theirMTU = 1280
 | 
						sinfo.theirMTU = 1280
 | 
				
			||||||
	// TODO: sinfo.myMTU becomes unnecessary if we always have a reference to the
 | 
					 | 
				
			||||||
	// sessions struct so let's check if that is the case
 | 
					 | 
				
			||||||
	sinfo.myMTU = ss.myMaximumMTU
 | 
						sinfo.myMTU = ss.myMaximumMTU
 | 
				
			||||||
	now := time.Now()
 | 
						now := time.Now()
 | 
				
			||||||
	sinfo.timeOpened = now
 | 
						sinfo.timeOpened = now
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue