func DoNetwork(ad *peersdb.PeerAddr) { var e error conn := NewConnection(ad) Mutex_net.Lock() if _, ok := OpenCons[ad.UniqID()]; ok { if common.DebugLevel > 0 { fmt.Println(ad.Ip(), "already connected") } common.CountSafe("ConnectingAgain") Mutex_net.Unlock() return } OpenCons[ad.UniqID()] = conn OutConsActive++ Mutex_net.Unlock() go func() { conn.Conn, e = net.DialTimeout("tcp4", fmt.Sprintf("%d.%d.%d.%d:%d", ad.Ip4[0], ad.Ip4[1], ad.Ip4[2], ad.Ip4[3], ad.Port), TCPDialTimeout) if e == nil { conn.X.ConnectedAt = time.Now() if common.DebugLevel != 0 { println("Connected to", ad.Ip()) } conn.Run() } else { if common.DebugLevel != 0 { println("Could not connect to", ad.Ip()) } //println(e.Error()) } Mutex_net.Lock() delete(OpenCons, ad.UniqID()) OutConsActive-- Mutex_net.Unlock() ad.Dead() }() }
func ConnectionActive(ad *peersdb.PeerAddr) (yes bool) { Mutex_net.Lock() _, yes = OpenCons[ad.UniqID()] Mutex_net.Unlock() return }