Lance Stout
2eeaf4d80c
Use provided stanza ID.
2012-04-25 13:55:46 -07:00
Lance Stout
0cc14cee4d
Ensure that SSL errors are handled in Py3.3
2012-04-24 16:11:49 -07:00
Lance Stout
a20a9c505d
Track threads to ensure all have exited when disconnecting.
2012-04-22 18:13:36 -07:00
Lance Stout
913738444e
Count and track the main threads, so we can delay disconnecting until all have quit.
2012-04-21 10:36:39 -07:00
Lance Stout
8ee30179ea
Add _use_daemons flag to XMLStream to run all threads in daemon mode.
...
This WILL make the Python interpreter produce exceptions on shutdown.
2012-04-20 15:21:31 -07:00
Lance Stout
cb2469322b
Handle using provided weakrefs as stanza parent references.
...
Fixes issue #159
2012-04-14 11:13:38 -04:00
Lance Stout
94aa6673ca
Check for the stop event more aggressively in the send thread.
2012-04-13 08:27:11 -04:00
Lance Stout
4cd5d3b3b5
Fix DNS resolution results for IP literals.
2012-04-10 14:08:33 -04:00
Lance Stout
15ef273141
Add a prefix to stanza ID values to ensure that they are unique per client.
2012-04-08 21:15:53 -04:00
Lance Stout
aedbecd673
Correct the statemachine's ensure_any method.
...
It had not been updated to use the new condition instead of the old
threading event.
2012-04-06 17:39:51 -04:00
Lance Stout
51e5aee830
Add default mapping of localhost to ::1 and 127.0.0.1
2012-04-06 15:08:21 -04:00
Lance Stout
48504ed5e2
Display IPv6 literal addresses in brackets.
2012-04-01 19:32:12 -07:00
Lance Stout
4d4d1e0ee5
Improve connection handling by not delaying until all DNS records are tried.
2012-03-30 10:12:44 -07:00
Lance Stout
c1d36cad46
Add better DNS resolver wrapper.
2012-03-30 10:12:43 -07:00
Lance Stout
912463ed6a
Fix sending data after </stream>
...
Clearing the session_started_event before sending </stream> will
pause the send loop so that we don't continue sending data after
the </stream>.
2012-03-28 23:53:55 -07:00
Lance Stout
94923ae898
Improve handling disconnections.
...
- Add option for disconnecting without sending </stream>:
self.disconnect(send_close=False)
- Optionally distinguish between session_end and disconnected based
on if </stream> was sent.
self.end_session_on_disconnect = False
2012-03-27 23:24:42 -07:00
Lance Stout
a1ddd88208
Add support for a new type of stanza interface: bool
...
The set of bool_interfaces provides default behaviour for
checking/setting the presence of empty subelements.
The prime example of this would be:
bool_interfaces = set(['required'])
This would mean that ``stanza['required']`` would return ``True`` for:
<stanza>
<required />
</stanza>
and ``False`` for:
<stanza />
Likewise, assigning ``stanza['required'] = True`` would add an empty
``<required />`` element, and setting it to ``False`` would remove
such an element if it exists.
2012-03-27 21:05:50 -07:00
Lance Stout
ee6a9b981a
Simplify sending whitespace keepalives.
...
Now that we have the send lock, we can use now=True.
2012-03-27 20:53:27 -07:00
Lance Stout
fa4c52e499
Correct handling of acks for XEP-0198 under heavy load.
2012-03-21 13:00:43 -07:00
Lance Stout
d5484808a7
Respect reattempt=False setting when reconnecting.
2012-03-21 10:28:26 -07:00
Lance Stout
59d1b8e131
Correct connect() documentation, don't delay attempts if reattempt=False.
...
See issue #152
2012-03-20 09:56:39 -07:00
Lance Stout
fbdf2bed49
Add out_sync filter category.
...
Added option to XMLStream.send() to skip applying filters.
Filters in the out_sync group are synced with placing stanza content
either on the wire directly or into the send queue. Because of this,
out_sync filters should not block.
2012-03-18 00:59:45 -07:00
Lance Stout
9f43d31bf5
Add setting for maximum number of reconnection attempts.
...
Setting self.reconnect_max_attempts to a non-None value will limit
the number of times a connection attempt will be made before quiting
and raising a 'connection_failed' event.
2012-03-12 16:19:18 -07:00
Lance Stout
4cb8a8d389
Modify the cert event to provide the PEM encoded cert in all cases.
2012-03-07 15:03:35 -08:00
Lance Stout
53bcd33e1d
Let disconnect() wait for its lock for a few seconds.
...
This should eliminate most debug statements about not being
able to acquire a lock during disconnect.
2012-02-22 07:57:13 -08:00
Lance Stout
ecd6ad6930
Fix incompatibility with clearing an element between ElementTree and cElementTree
2012-02-19 20:27:53 -08:00
Lance Stout
c36073b40e
xml.etree.ElementTree raises ExpatError instead of SyntaxError or ParseError.
2012-02-19 20:27:19 -08:00
Lance Stout
94b57d232d
More pyflakes cleanup.
2012-02-18 11:44:05 -08:00
Lance Stout
c43c7be86c
Make last_xml usage a little more explict.
2012-02-17 11:40:07 -08:00
Lance Stout
c58462f154
Fix undeclared variable usage for reconnect.
2012-02-17 11:12:48 -08:00
Lance Stout
fb2582e53b
Fix fixing remove_stanza()
...
Fixes issue #146
2012-02-16 07:25:44 -08:00
Lance Stout
d807613117
Don't retrieve cert until a connection is made.
2012-02-16 07:02:56 -08:00
Lance Stout
6d922d00c3
Fix remove_stanza().
...
Fixes issue #146
2012-02-16 07:02:19 -08:00
Lance Stout
61ea84093b
Don't shutdown completely after handling SyntaxError.
...
The ``shutdown = True`` line was preventing the stream from reconnecting
after handling the error.
Fixes issues #101 , #145
2012-02-10 19:28:12 -08:00
Lance Stout
e76d6a481f
Fix undefined variable references when DNS timeouts.
2012-02-10 19:20:17 -08:00
Lance Stout
ca5145c210
Fix IPv6 query logging.
2012-02-10 06:46:51 +01:00
Lance Stout
1a272fd276
Add support for querying and connecting to IPv6 addresses.
...
Tested using servers provided by Florian Jensen (flosoft.biz)
during the 2012 FOSDEM XMPP Summit.
Fixes issue #94 .
2012-02-09 21:28:28 -08:00
Lance Stout
952260b423
Add ssl_cert event (direct).
...
The payload is a dictionary of parsed cert data, as provided by
Python's getpeercert() socket method. It unfortunately does not
provide much detail beyond basic info.
2012-02-04 14:16:37 +01:00
Lance Stout
f98e5a03de
Fix typo s/is_set/is_set()
2012-02-02 18:14:48 +01:00
Lance Stout
3ab7c8bcc3
Make socket_error run as a direct event to ensure that it is handled.
...
Socket errors that occur before stream processing begins could not be
handled as the event loop would not be running yet.
Resolves issue #142
2012-01-28 18:54:46 -08:00
Lance Stout
1e01903072
Revert "Remove stream feature handlers on session_start."
...
This reverts commit 4274f49ada
.
The SASL mech was choking on this, so let's send it back for some
more refining.
2012-01-18 11:51:00 -08:00
Lance Stout
86d8736dcc
Hash JIDs based on full JID string.
...
This makes JID objects equivalent to strings in dictionaries, etc.
>>> j = JID('foo@example.com')
>>> s = 'foo@example.com'
>>> d = {j: 'yay'}
>>> d[j]
'yay'
>>> d[s]
'yay'
>>> d[s] = 'yay!!'
>>> d[j]
'yay!!'
2012-01-17 23:03:48 -08:00
Lance Stout
2923f56561
Pre-parse StanzaPath paths to speed up matching.
...
The parsing and namespace cleaning isn't terribly expensive, but it does
add up. It was adding an extra 5sec when processing 100,000 basic
message stanzas.
2012-01-17 22:28:44 -08:00
Lance Stout
4274f49ada
Remove stream feature handlers on session_start.
...
Based on profiling, using around 35 stream handlers quarters the number
of basic message stanzas that can be processed in a second, in
comparison to only using the bare minimum of four handlers.
To help, we can drop handlers for stream features once the session
has started. So that we can re-enable these handlers when a stream
must restart, the 'stream_start' event has been added which fires
whenever a stream header is received.
The 'stream_start' event is a more generic replacement for the
existing start_stream_handler() method.
2012-01-17 22:14:24 -08:00
Lance Stout
de35848500
Don't serialize XML unless we need to.
2012-01-14 10:54:48 -08:00
Lance Stout
e0545bf0bc
Merge branch 'develop' into develop-1.1
2011-12-31 01:29:12 -05:00
Lance Stout
03bc38f7e3
Add docs on using Iq stanzas.
2011-12-31 01:28:41 -05:00
Lance Stout
1a61bdb302
Ensure that stanza plugins work as expected if the XML is appended.
2011-12-28 09:53:22 -05:00
Lance Stout
2f2ebb37e4
Merge branch 'develop' into develop-1.1
2011-12-27 18:05:42 -05:00
Lance Stout
42a86fe0d4
Disconnect when a SyntaxError is found.
...
This should resolve issue #102
2011-12-27 18:01:26 -05:00