equal
deleted
inserted
replaced
48 ch <- os.NewError(fmt.Sprintf( |
48 ch <- os.NewError(fmt.Sprintf( |
49 "Roster query result not query: %v", st)) |
49 "Roster query result not query: %v", st)) |
50 return false |
50 return false |
51 } |
51 } |
52 cl.roster = make(map[string] *RosterItem, len(rq.Item)) |
52 cl.roster = make(map[string] *RosterItem, len(rq.Item)) |
53 for _, item := range(rq.Item) { |
53 for i, item := range(rq.Item) { |
54 cl.roster[item.Jid] = &item |
54 cl.roster[item.Jid] = &rq.Item[i] |
55 } |
55 } |
56 ch <- nil |
56 ch <- nil |
57 return false |
57 return false |
58 } |
58 } |
59 cl.HandleStanza(iq.Id, f) |
59 cl.HandleStanza(iq.Id, f) |
93 // of via a method call. |
93 // of via a method call. |
94 // BUG(cjyar) RFC 3921, Section 7.4 says we need to reply. |
94 // BUG(cjyar) RFC 3921, Section 7.4 says we need to reply. |
95 func (cl *Client) maybeUpdateRoster(st Stanza) { |
95 func (cl *Client) maybeUpdateRoster(st Stanza) { |
96 rq, ok := st.GetNested().(*RosterQuery) |
96 rq, ok := st.GetNested().(*RosterQuery) |
97 if st.GetName() == "iq" && st.GetType() == "set" && ok { |
97 if st.GetName() == "iq" && st.GetType() == "set" && ok { |
98 for _, item := range(rq.Item) { |
98 for i, item := range(rq.Item) { |
99 if item.Subscription == "remove" { |
99 if item.Subscription == "remove" { |
100 cl.roster[item.Jid] = nil |
100 cl.roster[item.Jid] = nil |
101 } else { |
101 } else { |
102 cl.roster[item.Jid] = &item |
102 cl.roster[item.Jid] = &rq.Item[i] |
103 } |
103 } |
104 } |
104 } |
105 } |
105 } |
106 } |
106 } |