From f22d8e67b402f4756a497d8797e1526c2b7682a1 Mon Sep 17 00:00:00 2001
From: Lance Stout <lancestout@gmail.com>
Date: Tue, 9 Sep 2014 08:49:37 -0700
Subject: Preserve ID for error responses

Fixes #319
---
 sleekxmpp/stanza/rootstanza.py | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'sleekxmpp/stanza')

diff --git a/sleekxmpp/stanza/rootstanza.py b/sleekxmpp/stanza/rootstanza.py
index a7c2b218..52b807e5 100644
--- a/sleekxmpp/stanza/rootstanza.py
+++ b/sleekxmpp/stanza/rootstanza.py
@@ -60,7 +60,9 @@ class RootStanza(StanzaBase):
             self.send()
         elif isinstance(e, XMPPError):
             # We raised this deliberately
+            keep_id = self['id']
             self.reply(clear=e.clear)
+            self['id'] = keep_id
             self['error']['condition'] = e.condition
             self['error']['text'] = e.text
             self['error']['type'] = e.etype
@@ -72,7 +74,9 @@ class RootStanza(StanzaBase):
             self.send()
         else:
             # We probably didn't raise this on purpose, so send an error stanza
+            keep_id = self['id']
             self.reply()
+            self['id'] = keep_id
             self['error']['condition'] = 'undefined-condition'
             self['error']['text'] = "SleekXMPP got into trouble."
             self['error']['type'] = 'cancel'
-- 
cgit v1.2.3