mathieui
e68135f59f
XEP-0049: wrap functions with coroutine_wrapper
2015-02-24 22:46:04 +01:00
mathieui
6408c5a747
XEP-0115: fix a handler which expected an iq to block
2015-02-24 22:46:04 +01:00
mathieui
115fe954ac
XEP-0153: wrap functions with coroutine_wrapper
2015-02-24 22:46:04 +01:00
mathieui
3d243f7da5
XEP-0054: wrap functions with coroutine_wrapper
2015-02-24 22:46:04 +01:00
mathieui
ea5615f236
XEP-0084: wrap functions with coroutine_wrapper
2015-02-24 22:46:04 +01:00
mathieui
69da1c1d7c
XEP-0163: wrap publish() with coroutine_wrapper
2015-02-24 22:46:03 +01:00
mathieui
e85fa4203e
XEP-0060: wrap all iq-sending functions with coroutine_wrapper
2015-02-24 22:46:03 +01:00
mathieui
506ca69917
XEP-0030: allow get_info and get_items to return a coroutine
2015-02-24 22:46:03 +01:00
mathieui
8ac0ecdf40
Fix dns resolution without aiodns
...
(use loop.getaddrinfo instead of the blocking version)
2015-02-24 19:17:45 +01:00
mathieui
dbd8115557
Remove the filesocket shim (2.6 compatibility)
2015-02-24 19:08:12 +01:00
mathieui
74b4ea20bf
Add back stanza-specific exception handlers
...
(fixes the test suite too)
2015-02-23 17:43:35 +01:00
mathieui
11fbaa4241
Import xmlstream.asyncio and coroutine_wrapper at the top level
...
Since they will be used quite a lot in plugins.
2015-02-23 17:32:39 +01:00
mathieui
8fd0d7c993
Add a coroutine_wrapper decorator
...
This decorator checks for the coroutine=True keyword arg and wraps the
result of the function call in a coroutine if it isn’t.
This allows to have constructs like:
@coroutine_wrapper
def toto(xmpp, *, coroutine=False):
if xmpp.cached:
return xmpp.cached
else:
return xmpp.make_iq_get().send(coroutine=coroutine)
@asyncio.coroutine
def main(xmpp):
result = yield from toto(xmpp, coroutine=True)
xmpp.cached = result
result2 = yield from toto(xmpp, coroutine=True)
If the wrapper wasn’t there, the second fetch would fail. This decorator
does not do anything if the coroutine argument is False.
2015-02-23 17:32:31 +01:00
mathieui
1450d36377
Add a coroutine parameter to iq.send() to return a coroutine
...
(instead of exposing a different send_coroutine method)
2015-02-23 17:20:47 +01:00
mathieui
06358d0665
Use CallbackCoroutine with Iq callbacks too
2015-02-22 20:13:48 +01:00
mathieui
2b3b86e281
Allow event handlers to be coroutine functions
...
And do not copy data when running events with XMLStream.event()
2015-02-22 14:17:17 +01:00
mathieui
92e4bc752a
Add a “blocking” send_coroutine method to the Iq class
2015-02-21 23:45:30 +01:00
mathieui
ffb2e05f21
Check that ciphers have been initialized
...
(if not, python will use the system default)
2015-02-17 04:27:03 +01:00
mathieui
1e2665df19
Update the test suite.
...
- monkey-patch our own monkey-patched idle_call to run events immediatly
rather than adding them to the event queue, and add a fake transport
with a fake socket.
- remove the test file related to xep_0059 as it relies on blocking
behavior, and comment out one xep_0030 test uses xep_0059
- remove many instances of threading and sleep()s because they do
nothing except waste time and introduce race conditions.
- keep exactly two sleep() in IoT xeps because they rely on timeouts
2015-02-12 12:23:47 +01:00
mathieui
4d063e287e
Remove more threaded= and block= options from the plugins
...
(also, correct a typo)
2015-02-12 12:21:20 +01:00
mathieui
44f02fb3ab
Do the plugins post_init() upload loading
...
(the top_level boolean used to load them at this point wasn’t ever set
to true)
2015-02-12 12:18:32 +01:00
mathieui
f6b3a0c6cf
Fix the uses of stanza.reply()
...
This is relying on the stanzas being copied for each handler. We no
longer do that for performance reasons, so instead of editing the copy
in-place, stanza.reply() now returns a new stanza.
2015-02-12 12:17:01 +01:00
mathieui
8b36e918e8
Fix the componentxmpp interface
2015-02-12 12:11:50 +01:00
Florent Le Coz
957c635fb7
XMLStream must provide the BaseProtocol interface
2015-02-04 17:49:30 +01:00
mathieui
4027927c6e
Don’t set the msg['from'] and msg['id'] in receipt.ack()
...
setting msg['id'] is wrong, and setting msg['from'] might lead to
echoing back wrong input.
2015-02-04 16:49:39 +01:00
mathieui
62eefdbd6a
Expose MUC support in disco#info
...
http://xmpp.org/extensions/xep-0045.html#disco-client
2015-01-15 22:50:49 +01:00
Florent Le Coz
225e07eb64
Fix the call of iscoroutinefunction()
2015-01-05 11:36:24 +01:00
Florent Le Coz
1207c81ab5
Do not copy the stanza before calling each handler
2015-01-03 18:42:57 +01:00
Florent Le Coz
565da65ccd
Use a deque for the idle list
2015-01-03 16:13:39 +01:00
Florent Le Coz
47fbd4cead
Delay the handling of stanza for when the process is not busy
...
We use some dirty monkey-patching to add a idle_call() function to the
asyncio module. We then use that method to handle each received stanza only
when the event loop is not busy with some other IO (mainly, the standard
input)
2015-01-03 06:08:03 +01:00
mathieui
1b9b4199e8
Make the ca_certs option useful again (CA-based cert validation)
...
It was broken since the fork.
2014-12-17 19:03:49 +01:00
mathieui
b5930ca958
Bring back authentication through SASL EXTERNAL
...
(and only update the ssl context before it gets used)
2014-12-11 19:27:13 +01:00
mathieui
423974f90d
Fix xep-0257 for slixmpp, and fix an element name
2014-12-11 14:46:52 +01:00
Florent Le Coz
5fcf08a415
Lower the timeout for each DNS resolution attempt
2014-11-14 01:13:52 +01:00
mathieui
3c06568ed5
Let loop.create_connection do its getaddrinfo coroutine if there are no dns records left/available
2014-11-12 22:22:20 +01:00
Florent Le Coz
68e35e631a
Also work without SRV records
2014-11-05 01:11:44 +01:00
mathieui
ad8c76602b
Depend on aiodns and not dnspython in the setup.py
2014-11-03 16:55:43 +01:00
Florent Le Coz
b5c98ba99e
Fix default value of dns_answers to None (instead of [])
2014-11-02 17:44:41 +01:00
mathieui
711f8dc6af
Use aiodns instead of dnspython to query DNS records
2014-11-02 17:26:29 +01:00
mathieui
5b41fb98de
Add the ssl_cert and ssl_invalid_chain back
...
- hack the stdlib to get the peercert, remove that hack when http://bugs.python.org/issue22768 gets fixed
2014-10-30 19:51:30 +01:00
mathieui
6da625dbdb
Make the "ciphers" option work again
2014-10-30 19:51:00 +01:00
mathieui
e862c47b8b
Remove the ssl_version option, as the defaults in python3.4 are sane
2014-10-30 19:49:26 +01:00
Florent Le Coz
4a8fe56470
Something something get_stanza_values
...
Fix something that was broken by Link Mauve
2014-10-11 21:04:28 +02:00
Emmanuel Gil Peyrot
7c3e61950d
Remove all deprecated alias in the core of slixmpp, and wherever they were used.
2014-09-28 23:58:46 +02:00
Emmanuel Gil Peyrot
61f89eef2e
Remove the now useless Queue wrapper in slixmpp.util.
2014-09-28 23:58:46 +02:00
Emmanuel Gil Peyrot
06de587ed2
Don’t check for logging.NullHandler, it got added in Python 3.1.
2014-09-28 23:58:46 +02:00
Emmanuel Gil Peyrot
49beb3ac08
Don’t set the wait time to True instead of leaving its float default, in examples.
2014-09-28 23:58:46 +02:00
Emmanuel Gil Peyrot
e1c944d723
Improve run_tests.py, allowing it to run only specific tests.
2014-09-01 02:47:15 +02:00
Emmanuel Gil Peyrot
83442b9849
Remove useless ez_setup.py file, we use setuptools in the normal setup.py instead.
2014-09-01 02:47:15 +02:00
Emmanuel Gil Peyrot
edd6ffeb01
Clean setup.py, using modern 3.4 features.
2014-09-01 02:47:15 +02:00