Age | Commit message (Collapse) | Author |
|
|
|
The new data interfaces were deleting the actual error conditions if
they were set afterward with falsy data.
|
|
|
|
|
|
|
|
|
|
Remaining items are suitable default actions for language supporting
interfaces.
|
|
Revert "Check for Iq results based on both the sender's JID and the ID value."
This reverts commit 9ffde5ab3706ca24b03dbea93c67810687c4b6ba.
|
|
|
|
|
|
|
|
This was XEP-0237, but is now part of RFC 6121.
Roster backends should now expose two additional methods:
version(jid):
Return the version of the given JID's roster.
set_version(jid, version):
Update the version of the given JID's roster.
A new state field will be passed to the backend if an item
has been marked for removal. This is 'removed' which will
be set to True.
|
|
|
|
|
|
get_roster() now returns the Iq result stanza instead of True (stanzas
also evaluate to True).
|
|
Some small fixes
|
|
|
|
computing logging data that may never be used. This is a HUGE performance improvement; in some of my test runs, unnecessary string creation was accounting for > 60% of all CPU time.
Note that using % in a string will _always_ perform the sting substitutions, because the strings are constructed before the function is called. So log.debug('%s' % expensiveoperation()) will take about the same CPU time whether or not the logging level is DEBUG or INFO. if you use , no substitutions are performed unless the string is actually logged
|
|
iq['error']['pubsub']['condition']
iq['error']['pubsub']['unsupported']
|
|
IqError and IqTimeout now extend XMPPError, so if you don't care
about the difference, you can use:
try:
self.do_something_with_iqs()
except XMPPError:
# Error? Timeout? I don't care!
pass
If you do need to distinguish between timeouts and error replies,
you can still continue to use:
try:
self.do_somethin_with_iqs()
except IqError as err:
pass
except IqTimeout:
pass
If you don't catch any Iq errors and you're processing a stanza
then an error response will be sent, just like normal if you raise
XMPPError or any other exception, except that the error messages
will be generic to prevent leaking too much information.
|
|
Conflicts:
setup.py
sleekxmpp/clientxmpp.py
|
|
|
|
|
|
Honestly, this is mainly just a demo/proof of concept that we
can handle dependencies and ordering issues with stream features.
DON'T use XEP-0078 if you are able to use the normal SASL method,
which should be the case unless you are dealing with a very old
XMPP server implementation.
|
|
Conflicts:
setup.py
|
|
|
|
|
|
Moved SASL registration completely to the feature plugin, instead of
keeping a portion of it in ClientXMPP.
|
|
|
|
|
|
The error bubbles through the event processing loop, breaking it and
hanging the application.
Instead, there is now a .exception(e) method on XMLStream which may
be overridden or reassigned that will receive all unhandled exceptions
(read: not XMPPError) from event and stream handlers.
|
|
|
|
|
|
|
|
|
|
|
|
If a stanza handler raised an exception, the exception was processed
and replied by the modified stanza, not a stanza with the original
content.
A copy is now made before handler processing, and if an exception occurs
it is the copy that processes the exception using the original content.
|
|
A little extra bit of docs for IqError.
|
|
Provides IqTimeout and IqError which are raised when an Iq response
does not arrive in time, or it arrives with type='error'.
|
|
Conflicts:
sleekxmpp/clientxmpp.py
|
|
|
|
Use the parameter now=True to skip the queue when
sending Iq stanzas, or using xmpp.send().
|
|
Conflicts:
sleekxmpp/clientxmpp.py
|
|
|
|
Since camelcase names are aliased to the underscored name at startup,
if the underscored version is replaced later, the camelCase name does
not reflect the change.
|
|
|
|
Conflicts:
sleekxmpp/xmlstream/stanzabase.py
|
|
Conflicts:
sleekxmpp/clientxmpp.py
|
|
This should prevent some reference cycles that will cause garbage
collection issues.
|
|
Instead of the actual callback object, return just the name of
the callback object created when using iq.send(callback=..).
This will help prevent memory leaks by not keeping an additional
reference to the object, but still allows for the callback to be
canceled by using self.remove_handler("handler_name").
|