diff options
author | John Smith <mrdoctorwho@gmail.com> | 2017-01-12 19:53:30 +0300 |
---|---|---|
committer | John Smith <mrdoctorwho@gmail.com> | 2017-01-12 19:53:30 +0300 |
commit | c60c434bfaf6e39739eec88193ee875441c9acc6 (patch) | |
tree | 99be174bfd7e5be445daf300123947f4a8599126 /modules/mod_prs_main.py | |
parent | da2aaf28a2664620b6d5b65fb7bf1b2d56353bce (diff) |
Revert "Make roster check xmpp-based"
This reverts commit a5354a9f365dd3e18f10314d25dd36609671d640.
Diffstat (limited to 'modules/mod_prs_main.py')
-rw-r--r-- | modules/mod_prs_main.py | 52 |
1 files changed, 6 insertions, 46 deletions
diff --git a/modules/mod_prs_main.py b/modules/mod_prs_main.py index b832880..9c9da11 100644 --- a/modules/mod_prs_main.py +++ b/modules/mod_prs_main.py @@ -8,36 +8,8 @@ Module purpose is to receive and handle presences from __main__ import * from __main__ import _ -from utils import * -# keeps the user's roster -USERS_ON_INIT = {} -EXPIRING_OBJECT_LIFETIME = 600 -UPDATE_FRIENDS_DELAY = 60 - - -def updateFriends(user, local): - """ - Compares the local (xmpp) and remote (vk) list of friends - """ - if TransportID in local: - local.remove(TransportID) - if not user.vk.online: - return None - - friends = user.friends or user.vk.getFriends() - if not friends or not local: - logger.error("updateFriends: no friends received (local: %s, remote: %s) (jid: %s).", - str(local), str(friends), user.source) - return None - - for uid in friends: - if uid not in local: - user.sendSubPresence({uid: friends[uid]}) - # TODO - # for uid in self.friends: - # if uid not in friends: - # sendPresence(self.source, vk2xmpp(uid), "unsubscribe") +USERS_ON_INIT = set([]) def initializeUser(source, resource, prs): @@ -58,12 +30,10 @@ def initializeUser(source, resource, prs): report(crashLog("user.connect")) else: user.initialize(send=True, resource=resource) # probably we need to know resource a bit earlier than this time - utils.runThread(updateFriends, (user, list(USERS_ON_INIT[source])), # making a copy so we can remote it safely - delay=UPDATE_FRIENDS_DELAY) utils.runThread(executeHandlers, ("prs01", (source, prs))) if source in USERS_ON_INIT: - del USERS_ON_INIT[source] + USERS_ON_INIT.remove(source) def presence_handler(cl, prs): @@ -80,8 +50,6 @@ def presence_handler(cl, prs): logger.debug("Received presence %s from user. Calling sendInitPresence() (jid: %s)" % (pType, source)) user.resources.add(resource) utils.runThread(user.sendInitPresence) - elif source in USERS_ON_INIT: - USERS_ON_INIT[source].add(vk2xmpp(destination)) elif pType == "unavailable": if destination == TransportID and resource in user.resources: @@ -117,19 +85,11 @@ def presence_handler(cl, prs): removeUser(user, True, False) executeHandlers("evt09", (source,)) - # when user becomes online, we get subscribe as we don't have both subscription - elif pType not in ("error", "unavailable"): + elif pType in ("available", None) and destination == TransportID: # It's possible to receive more than one presence from @gmail.com - if source in USERS_ON_INIT: - roster = USERS_ON_INIT[source] - if destination == TransportID and TransportID not in roster and pType in ("available", "probe", None): - utils.runThread(initializeUser, args=(source, resource, prs)) - else: - __set = set([]) - USERS_ON_INIT[source] = ExpiringObject(__set, EXPIRING_OBJECT_LIFETIME) - if destination == TransportID: - utils.runThread(initializeUser, args=(source, resource, prs)) - USERS_ON_INIT[source].add(vk2xmpp(destination)) + if source not in USERS_ON_INIT: + utils.runThread(initializeUser, args=(source, resource, prs)) + USERS_ON_INIT.add(source) utils.runThread(executeHandlers, ("prs01", (source, prs))) |