Changeset 77 in code for trunk/upstream.go
- Timestamp:
- Mar 4, 2020, 5:22:58 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/upstream.go
r74 r77 26 26 27 27 type upstreamConn struct { 28 upstream *Upstream28 network *network 29 29 logger Logger 30 30 net net.Conn … … 42 42 registered bool 43 43 nick string 44 username string 45 realname string 44 46 closed bool 45 47 modes modeSet … … 48 50 } 49 51 50 func connectToUpstream(u *user, upstream *Upstream) (*upstreamConn, error) { 51 logger := &prefixLogger{u.srv.Logger, fmt.Sprintf("upstream %q: ", upstream.Addr)} 52 logger.Printf("connecting to server") 53 54 netConn, err := tls.Dial("tcp", upstream.Addr, nil) 52 func connectToUpstream(network *network) (*upstreamConn, error) { 53 logger := &prefixLogger{network.user.srv.Logger, fmt.Sprintf("upstream %q: ", network.Addr)} 54 55 addr := network.Addr 56 if !strings.ContainsRune(addr, ':') { 57 addr = addr + ":6697" 58 } 59 60 logger.Printf("connecting to TLS server at address %q", addr) 61 netConn, err := tls.Dial("tcp", addr, nil) 55 62 if err != nil { 56 return nil, fmt.Errorf("failed to dial %q: %v", upstream.Addr, err)63 return nil, fmt.Errorf("failed to dial %q: %v", addr, err) 57 64 } 58 65 … … 61 68 msgs := make(chan *irc.Message, 64) 62 69 uc := &upstreamConn{ 63 upstream: upstream,70 network: network, 64 71 logger: logger, 65 72 net: netConn, 66 73 irc: irc.NewConn(netConn), 67 srv: u.srv,68 user: u,74 srv: network.user.srv, 75 user: network.user, 69 76 messages: msgs, 70 ring: NewRing( u.srv.RingCap),77 ring: NewRing(network.user.srv.RingCap), 71 78 channels: make(map[string]*upstreamChannel), 72 79 history: make(map[string]uint64), … … 103 110 func (uc *upstreamConn) forEachDownstream(f func(*downstreamConn)) { 104 111 uc.user.forEachDownstream(func(dc *downstreamConn) { 105 if dc. upstream != nil && dc.upstream != uc.upstream{112 if dc.network != nil && dc.network != uc.network { 106 113 return 107 114 } … … 164 171 uc.logger.Printf("connection registered") 165 172 166 for _, ch := range uc.upstream.Channels { 173 channels, err := uc.srv.db.ListChannels(uc.network.ID) 174 if err != nil { 175 uc.logger.Printf("failed to list channels from database: %v", err) 176 break 177 } 178 179 for _, ch := range channels { 167 180 uc.SendMessage(&irc.Message{ 168 181 Command: "JOIN", 169 Params: []string{ch },182 Params: []string{ch.Name}, 170 183 }) 171 184 } … … 372 385 373 386 func (uc *upstreamConn) register() { 374 uc.nick = uc.upstream.Nick 387 uc.nick = uc.network.Nick 388 uc.username = uc.network.Username 389 if uc.username == "" { 390 uc.username = uc.nick 391 } 392 uc.realname = uc.network.Realname 393 if uc.realname == "" { 394 uc.realname = uc.nick 395 } 396 375 397 uc.SendMessage(&irc.Message{ 376 398 Command: "NICK", … … 379 401 uc.SendMessage(&irc.Message{ 380 402 Command: "USER", 381 Params: []string{uc.u pstream.Username, "0", "*", uc.upstream.Realname},403 Params: []string{uc.username, "0", "*", uc.realname}, 382 404 }) 383 405 }
Note:
See TracChangeset
for help on using the changeset viewer.