mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-04 03:05:07 +03:00 
			
		
		
		
	I think this fixes the concurrent map read/write panic
This commit is contained in:
		
							parent
							
								
									e88bef35c0
								
							
						
					
					
						commit
						784acba823
					
				
					 1 changed files with 8 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -64,9 +64,11 @@ func (c *Conn) String() string {
 | 
			
		|||
	return fmt.Sprintf("conn=%p", c)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// This should only be called from the router goroutine
 | 
			
		||||
// This should never be called from the router goroutine
 | 
			
		||||
func (c *Conn) search() error {
 | 
			
		||||
	sinfo, isIn := c.core.searches.searches[*c.nodeID]
 | 
			
		||||
	var sinfo *searchInfo
 | 
			
		||||
	var isIn bool
 | 
			
		||||
	c.core.router.doAdmin(func() { sinfo, isIn = c.core.searches.searches[*c.nodeID] })
 | 
			
		||||
	if !isIn {
 | 
			
		||||
		done := make(chan struct{}, 1)
 | 
			
		||||
		var sess *sessionInfo
 | 
			
		||||
| 
						 | 
				
			
			@ -80,8 +82,10 @@ func (c *Conn) search() error {
 | 
			
		|||
			default:
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		sinfo = c.core.searches.newIterSearch(c.nodeID, c.nodeMask, searchCompleted)
 | 
			
		||||
		sinfo.continueSearch()
 | 
			
		||||
		c.core.router.doAdmin(func() {
 | 
			
		||||
			sinfo = c.core.searches.newIterSearch(c.nodeID, c.nodeMask, searchCompleted)
 | 
			
		||||
			sinfo.continueSearch()
 | 
			
		||||
		})
 | 
			
		||||
		<-done
 | 
			
		||||
		c.session = sess
 | 
			
		||||
		if c.session == nil && err == nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue