- Timestamp:
- Mar 25, 2020, 9:53:08 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r142 r143 700 700 } 701 701 } 702 702 }) 703 704 dc.forEachNetwork(func(net *network) { 703 705 historyName := dc.rawUsername 704 706 … … 706 708 var seqPtr *uint64 707 709 if firstDownstream { 708 uc.network.lock.Lock()709 seq, ok := uc.network.history[historyName]710 uc.network.lock.Unlock()710 net.lock.Lock() 711 seq, ok := net.history[historyName] 712 net.lock.Unlock() 711 713 if ok { 712 714 seqPtr = &seq … … 715 717 716 718 // TODO: we need to create a consumer when adding networks on-the-fly 717 consumer, ch := uc.ring.NewConsumer(seqPtr)719 consumer, ch := net.ring.NewConsumer(seqPtr) 718 720 go func() { 719 721 for { … … 721 723 select { 722 724 case <-ch: 725 uc := net.upstream() 726 if uc == nil { 727 dc.logger.Printf("ignoring messages for upstream %q: upstream is disconnected", net.Addr) 728 break 729 } 723 730 dc.ringMessages <- ringMessage{consumer, uc} 724 731 case <-dc.closed: … … 738 745 739 746 if lastDownstream { 740 uc.network.lock.Lock()741 uc.network.history[historyName] = seq742 uc.network.lock.Unlock()747 net.lock.Lock() 748 net.history[historyName] = seq 749 net.lock.Unlock() 743 750 } 744 751 }() … … 1087 1094 dc.lock.Unlock() 1088 1095 1089 uc. ring.Produce(echoMsg)1096 uc.network.ring.Produce(echoMsg) 1090 1097 } 1091 1098 default: -
trunk/upstream.go
r142 r143 35 35 user *user 36 36 outgoing chan<- *irc.Message 37 ring *Ring38 37 39 38 serverName string … … 81 80 user: network.user, 82 81 outgoing: outgoing, 83 ring: NewRing(network.user.srv.RingCap),84 82 channels: make(map[string]*upstreamChannel), 85 83 caps: make(map[string]string), … … 875 873 } 876 874 877 uc. ring.Produce(msg)875 uc.network.ring.Produce(msg) 878 876 case "INVITE": 879 877 var nick string -
trunk/user.go
r137 r143 21 21 Network 22 22 user *user 23 ring *Ring 23 24 24 25 lock sync.Mutex … … 31 32 Network: *record, 32 33 user: user, 34 ring: NewRing(user.srv.RingCap), 33 35 history: make(map[string]uint64), 34 36 }
Note:
See TracChangeset
for help on using the changeset viewer.