parent
669e708b70
commit
cedc9dd175
@ -96,6 +96,7 @@ class ClientXMPP(BaseXMPP):
|
|||||||
|
|
||||||
self.add_event_handler('connected', self._reset_connection_state)
|
self.add_event_handler('connected', self._reset_connection_state)
|
||||||
self.add_event_handler('session_bind', self._handle_session_bind)
|
self.add_event_handler('session_bind', self._handle_session_bind)
|
||||||
|
self.add_event_handler('roster_update', self._handle_roster)
|
||||||
|
|
||||||
self.register_stanza(StreamFeatures)
|
self.register_stanza(StreamFeatures)
|
||||||
|
|
||||||
@ -106,7 +107,7 @@ class ClientXMPP(BaseXMPP):
|
|||||||
self.register_handler(
|
self.register_handler(
|
||||||
Callback('Roster Update',
|
Callback('Roster Update',
|
||||||
StanzaPath('iq@type=set/roster'),
|
StanzaPath('iq@type=set/roster'),
|
||||||
self._handle_roster))
|
lambda iq: self.event('roster_update', iq)))
|
||||||
|
|
||||||
# Setup default stream features
|
# Setup default stream features
|
||||||
self.register_plugin('feature_starttls')
|
self.register_plugin('feature_starttls')
|
||||||
@ -244,13 +245,22 @@ class ClientXMPP(BaseXMPP):
|
|||||||
if 'rosterver' in self.features:
|
if 'rosterver' in self.features:
|
||||||
iq['roster']['ver'] = self.client_roster.version
|
iq['roster']['ver'] = self.client_roster.version
|
||||||
|
|
||||||
if not block and callback is None:
|
|
||||||
callback = lambda resp: self._handle_roster(resp)
|
if not block or callback is not None:
|
||||||
|
block = False
|
||||||
|
if callback is None:
|
||||||
|
callback = lambda resp: self.event('roster_update', resp)
|
||||||
|
else:
|
||||||
|
orig_cb = callback
|
||||||
|
def wrapped(resp):
|
||||||
|
self.event('roster_update', resp)
|
||||||
|
orig_cb(resp)
|
||||||
|
callback = wrapped
|
||||||
|
|
||||||
response = iq.send(block, timeout, callback)
|
response = iq.send(block, timeout, callback)
|
||||||
|
|
||||||
if block:
|
if block:
|
||||||
self._handle_roster(response)
|
self.event('roster_update', response)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def _reset_connection_state(self, event=None):
|
def _reset_connection_state(self, event=None):
|
||||||
@ -301,7 +311,6 @@ class ClientXMPP(BaseXMPP):
|
|||||||
|
|
||||||
roster[jid].save(remove=(item['subscription'] == 'remove'))
|
roster[jid].save(remove=(item['subscription'] == 'remove'))
|
||||||
|
|
||||||
self.event("roster_update", iq)
|
|
||||||
if iq['type'] == 'set':
|
if iq['type'] == 'set':
|
||||||
resp = self.Iq(stype='result',
|
resp = self.Iq(stype='result',
|
||||||
sto=iq['from'],
|
sto=iq['from'],
|
||||||
|
@ -49,6 +49,9 @@ class TestStreamRoster(SleekTest):
|
|||||||
# Wait for get_roster to return.
|
# Wait for get_roster to return.
|
||||||
t.join()
|
t.join()
|
||||||
|
|
||||||
|
# Give the event queue time to process.
|
||||||
|
time.sleep(.1)
|
||||||
|
|
||||||
self.check_roster('tester@localhost', 'user@localhost',
|
self.check_roster('tester@localhost', 'user@localhost',
|
||||||
name='User',
|
name='User',
|
||||||
subscription='from',
|
subscription='from',
|
||||||
@ -56,9 +59,6 @@ class TestStreamRoster(SleekTest):
|
|||||||
pending_out=True,
|
pending_out=True,
|
||||||
groups=['Friends', 'Examples'])
|
groups=['Friends', 'Examples'])
|
||||||
|
|
||||||
# Give the event queue time to process.
|
|
||||||
time.sleep(.1)
|
|
||||||
|
|
||||||
self.failUnless(len(roster_updates) == 1,
|
self.failUnless(len(roster_updates) == 1,
|
||||||
"Wrong number of roster_update events fired: %s (should be 1)" % len(roster_updates))
|
"Wrong number of roster_update events fired: %s (should be 1)" % len(roster_updates))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user