Commit 7194260f authored by zimio's avatar zimio

connects when server can't resume stream

parent 2090b9b9
......@@ -535,7 +535,7 @@ class XMPPDispatcher(PlugIn):
if self._owner._registered_name and not stanza.getAttr('from'):
stanza.setAttr('from', self._owner._registered_name)
if self.sm:
if self.sm and self.sm.enabled:
self.sm.uqueue.append(stanza)
self.sm.out_h = self.sm.out_h + 1
if len(self.sm.uqueue) > self.sm.max_queue:
......
......@@ -24,6 +24,7 @@ class Smacks():
self.max_queue = 5
self._owner = None
self.resuming = False
self.enabled = False # If SM is enabled
def set_owner(self, owner):
self._owner = owner
......@@ -51,6 +52,8 @@ class Smacks():
if r == 'false' or r == 'False' or r == '0':
self.negociate(False)
self.enabled = True
def negociate(self, resume=True):
# Every time we attempt to negociate, we must erase all previous info
# about any previous session
......@@ -69,7 +72,7 @@ class Smacks():
log.error('Attempted to resume without a valid session id ')
return
resume = Acks()
resume.buildResume(self.in_h, self.session_id)
resume.buildResume(self.in_h, None)#self.session_id)
self._owner.Connection.send(resume, True)
def send_ack(self, disp, stanza):
......@@ -105,17 +108,28 @@ class Smacks():
for i in self.uqueue:
self._owner.Connection.send(i, False)
def error_handling(self, disp, stanza): # NEEDS TESTING
def error_handling(self, disp, stanza):
tag = stanza.getTag('item-not-found')
# If the server doesn't recognize previd, forget about resuming
# Ask for service discovery, etc..
if tag:
self.negociate()
if stanza.getTag('item-not-found'):
self.enabled = False
self.resuming = False
self.negociate()
self.con._discover_server_at_connection(self.con.connection)
return
tag = stanza.getTag('feature-not-implemented')
# Doesn't support resumption
if tag:
if stanza.getTag('feature-not-implemented'):
self.enabled = False
self.negociate(False)
return
if stanza.getTag('unexpected-request'):
self.enabled = False
log.error('Gajim failed to negociate Stream Management')
return
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment