Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mrDoctorWho/xmpppy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormrDoctorWho <mrdoctorwho@gmail.com>2015-01-28 12:41:36 +0300
committermrDoctorWho <mrdoctorwho@gmail.com>2015-01-28 12:41:36 +0300
commit1f1c00fd4e273387abb2764b56e4fad83a00bc02 (patch)
treef7e38637979dfa3a63645b0a298188e44251d97d
parent21b998ac45435545caf0ca4a881b1cbfa4dd40c2 (diff)
Added socket.error filtering in send
Added additional features for forms Fixed freeze when component tried to disconnect twice
-rw-r--r--README.md4
-rw-r--r--xmpp/dispatcher.py7
-rw-r--r--xmpp/protocol.py12
-rw-r--r--xmpp/transports.py2
4 files changed, 14 insertions, 11 deletions
diff --git a/README.md b/README.md
index 49eac4c..8e2729f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
xmpppy
======
-Just another fork of xmpppy library. Provides full compability with standart xmpppy but also have a couple of security and performance fixes. \ No newline at end of file
+Just another fork of xmpppy library. Provides full compability with standart xmpppy but also have a couple of security, performance fixes and additional forms support.
+
+**xmpppy copyright © 2004 — 2009 Alexey "Snake" Nezhdanov** \ No newline at end of file
diff --git a/xmpp/dispatcher.py b/xmpp/dispatcher.py
index 5b2cf09..f873ffd 100644
--- a/xmpp/dispatcher.py
+++ b/xmpp/dispatcher.py
@@ -480,8 +480,9 @@ class Dispatcher(PlugIn):
"""
Send a stream terminator and and handle all incoming stanzas before stream closure.
"""
- self._owner_send("</stream:stream>")
- while self.Process(1):
- pass
+ if self._owner.connected:
+ self._owner_send("</stream:stream>")
+ while self.Process(1):
+ pass
iter = type(send)(Process.__code__, Process.__globals__, name = "iter", argdefs = Process.__defaults__, closure = Process.__closure__)
diff --git a/xmpp/protocol.py b/xmpp/protocol.py
index 7c70784..8cbc934 100644
--- a/xmpp/protocol.py
+++ b/xmpp/protocol.py
@@ -1164,14 +1164,14 @@ class DataReported(Node):
"""
return self.getTag("field", attrs={"var": name})
- def setField(self, name, typ=None, label=None, options=[]):
+ def setField(self, name, typ=None, label=None, desc=None, options=[]):
"""
Create if nessessary or get the existing datafield object with name "name" and return it.
If created, attributes "type" and "label" are applied to new datafield.
"""
field = self.getField(name)
if not field:
- field = self.addChild(node=DataField(name, None, typ, 0, label, options=options))
+ field = self.addChild(node=DataField(name, None, typ, 0, label, desc=desc, options=options))
return field
def asDict(self):
@@ -1236,13 +1236,13 @@ class DataItem(Node):
"""
return self.getTag("field", attrs={"var": name})
- def setField(self, name, value=None, typ=None, options=[]):
+ def setField(self, name, value=None, typ=None, desc=None, options=[]):
"""
Create if nessessary or get the existing datafield object with name "name" and return it.
"""
field = self.getField(name)
if not field:
- field = self.addChild(node=DataField(name, value, typ, options=options))
+ field = self.addChild(node=DataField(name, value, typ, desc=desc, options=options))
return field
def asDict(self):
@@ -1383,13 +1383,13 @@ class DataForm(Node):
"""
return self.getTag("field", attrs={"var": name})
- def setField(self, name, value=None, typ=None, options=[]):
+ def setField(self, name, value=None, typ=None, desc=None, options=[]):
"""
Create if nessessary or get the existing datafield object with name "name" and return it.
"""
field = self.getField(name)
if not field:
- field = self.addChild(node=DataField(name, value, typ, options=options))
+ field = self.addChild(node=DataField(name, value, typ, desc=desc, options=options))
return field
def asDict(self):
diff --git a/xmpp/transports.py b/xmpp/transports.py
index c733011..5287033 100644
--- a/xmpp/transports.py
+++ b/xmpp/transports.py
@@ -263,7 +263,7 @@ class TCPsocket(PlugIn):
with self._sequence:
try:
self._send(data)
- except Exception:
+ except (Exception, socket.error):
self.DEBUG("Socket error while sending data.", "error")
self._owner.disconnected()
else: