Legend:
- Unmodified
- Added
- Removed
-
trunk/db.go
r89 r90 118 118 } 119 119 120 func (db *DB) StoreNetwork(username string, network *Network) error { 121 db.lock.Lock() 122 defer db.lock.Unlock() 123 124 var netUsername, netRealname *string 125 if network.Username != "" { 126 netUsername = &network.Username 127 } 128 if network.Realname != "" { 129 netRealname = &network.Realname 130 } 131 132 var err error 133 if network.ID != 0 { 134 _, err = db.db.Exec("UPDATE Network SET addr = ?, nick = ?, username = ?, realname = ? WHERE id = ?", network.Addr, network.Nick, netUsername, netRealname, network.ID) 135 } else { 136 var res sql.Result 137 res, err = db.db.Exec("INSERT INTO Network(user, addr, nick, username, realname) VALUES (?, ?, ?, ?, ?)", username, network.Addr, network.Nick, netUsername, netRealname) 138 if err != nil { 139 return err 140 } 141 network.ID, err = res.LastInsertId() 142 } 143 return err 144 } 145 120 146 func (db *DB) ListChannels(networkID int64) ([]Channel, error) { 121 147 db.lock.RLock() -
trunk/downstream.go
r89 r90 104 104 func (dc *downstreamConn) marshalChannel(uc *upstreamConn, name string) string { 105 105 return name 106 } 107 108 func (dc *downstreamConn) forEachNetwork(f func(*network)) { 109 if dc.network != nil { 110 f(dc.network) 111 } else { 112 dc.user.forEachNetwork(f) 113 } 106 114 } 107 115 … … 459 467 }} 460 468 case "NICK": 469 var nick string 470 if err := parseMessageParams(msg, &nick); err != nil { 471 return err 472 } 473 474 var err error 475 dc.forEachNetwork(func(n *network) { 476 if err != nil { 477 return 478 } 479 n.Nick = nick 480 err = dc.srv.db.StoreNetwork(dc.user.Username, &n.Network) 481 }) 482 if err != nil { 483 return err 484 } 485 461 486 dc.forEachUpstream(func(uc *upstreamConn) { 462 487 uc.SendMessage(msg) -
trunk/server.go
r79 r90 108 108 srv: srv, 109 109 } 110 } 111 112 func (u *user) forEachNetwork(f func(*network)) { 113 u.lock.Lock() 114 for _, network := range u.networks { 115 f(network) 116 } 117 u.lock.Unlock() 110 118 } 111 119
Note:
See TracChangeset
for help on using the changeset viewer.