106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
+
+
+
+
+
+
|
- (bool)connection: (XMPPConnection*)connection
didReceiveIQ: (XMPPIQ*)iq
{
OFXMLElement *rosterElement;
OFXMLElement *element;
XMPPRosterItem *rosterItem;
OFString *origin;
rosterElement = [iq elementForName: @"query"
namespace: XMPP_NS_ROSTER];
if (rosterElement == nil)
return false;
if (![[iq type] isEqual: @"set"])
return false;
// Ensure the roster push has been sent by the server
origin = [[iq from] fullJID];
if (origin != nil && ![origin isEqual: [[connection JID] bareJID]])
return false;
element = [rosterElement elementForName: @"item"
namespace: XMPP_NS_ROSTER];
if (element != nil) {
rosterItem = [self XMPP_rosterItemWithXMLElement: element];
|