Commit fcf666e3 authored by mathieui's avatar mathieui

Fix #3441: Do not assign ID to inbound stanzas

parent 7ddcc342
......@@ -58,14 +58,14 @@ class Iq(RootStanza):
types = {'get', 'result', 'set', 'error'}
plugin_attrib = name
def __init__(self, *args, **kwargs):
def __init__(self, *args, recv=False, **kwargs):
"""
Initialize a new <iq> stanza with an 'id' value.
Overrides StanzaBase.__init__.
"""
StanzaBase.__init__(self, *args, **kwargs)
if self['id'] == '':
if not recv and self['id'] == '':
if self.stream is not None:
self['id'] = self.stream.new_id()
else:
......
......@@ -53,14 +53,14 @@ class Message(RootStanza):
lang_interfaces = sub_interfaces
types = {'normal', 'chat', 'headline', 'error', 'groupchat'}
def __init__(self, *args, **kwargs):
def __init__(self, *args, recv=False, **kwargs):
"""
Initialize a new <message /> stanza with an optional 'id' value.
Overrides StanzaBase.__init__.
"""
StanzaBase.__init__(self, *args, **kwargs)
if self['id'] == '':
if not recv and self['id'] == '':
if self.stream is not None and self.stream.use_message_ids:
self['id'] = self.stream.new_id()
else:
......
......@@ -61,14 +61,14 @@ class Presence(RootStanza):
'subscribed', 'unsubscribe', 'unsubscribed'}
showtypes = {'dnd', 'chat', 'xa', 'away'}
def __init__(self, *args, **kwargs):
def __init__(self, *args, recv=False, **kwargs):
"""
Initialize a new <presence /> stanza with an optional 'id' value.
Overrides StanzaBase.__init__.
"""
StanzaBase.__init__(self, *args, **kwargs)
if self['id'] == '':
if not recv and self['id'] == '':
if self.stream is not None and self.stream.use_presence_ids:
self['id'] = self.stream.new_id()
......
......@@ -1381,7 +1381,7 @@ class StanzaBase(ElementBase):
namespace = 'jabber:client'
def __init__(self, stream=None, xml=None, stype=None,
sto=None, sfrom=None, sid=None, parent=None):
sto=None, sfrom=None, sid=None, parent=None, recv=False):
self.stream = stream
if stream is not None:
self.namespace = stream.default_ns
......
......@@ -1157,7 +1157,7 @@ class XMLStream(asyncio.BaseProtocol):
xml.tag == stanza_class.tag_name():
stanza_type = stanza_class
break
stanza = stanza_type(self, xml)
stanza = stanza_type(self, xml, recv=True)
if stanza['lang'] is None and self.peer_default_lang:
stanza['lang'] = self.peer_default_lang
return stanza
......
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