summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream/xmlstream.py
AgeCommit message (Collapse)Author
2012-03-12Add setting for maximum number of reconnection attempts.Lance Stout
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-07Modify the cert event to provide the PEM encoded cert in all cases.Lance Stout
2012-02-22Let disconnect() wait for its lock for a few seconds.Lance Stout
This should eliminate most debug statements about not being able to acquire a lock during disconnect.
2012-02-19xml.etree.ElementTree raises ExpatError instead of SyntaxError or ParseError.Lance Stout
2012-02-18More pyflakes cleanup.Lance Stout
2012-02-17Fix undeclared variable usage for reconnect.Lance Stout
2012-02-16Fix fixing remove_stanza()Lance Stout
Fixes issue #146
2012-02-16Don't retrieve cert until a connection is made.Lance Stout
2012-02-16Fix remove_stanza().Lance Stout
Fixes issue #146
2012-02-10Don't shutdown completely after handling SyntaxError.Lance Stout
The ``shutdown = True`` line was preventing the stream from reconnecting after handling the error. Fixes issues #101, #145
2012-02-10Fix undefined variable references when DNS timeouts.Lance Stout
2012-02-10Fix IPv6 query logging.Lance Stout
2012-02-09Add support for querying and connecting to IPv6 addresses.Lance Stout
Tested using servers provided by Florian Jensen (flosoft.biz) during the 2012 FOSDEM XMPP Summit. Fixes issue #94.
2012-02-04Add ssl_cert event (direct).Lance Stout
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-02Fix typo s/is_set/is_set()Lance Stout
2012-01-28Make socket_error run as a direct event to ensure that it is handled.Lance Stout
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-18Revert "Remove stream feature handlers on session_start."Lance Stout
This reverts commit 4274f49ada77d709b931f65e34d3a64e75b81638. The SASL mech was choking on this, so let's send it back for some more refining.
2012-01-17Remove stream feature handlers on session_start.Lance Stout
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-14Don't serialize XML unless we need to.Lance Stout
2011-12-27Merge branch 'develop' into develop-1.1Lance Stout
2011-12-27Disconnect when a SyntaxError is found.Lance Stout
This should resolve issue #102
2011-12-14Log received data AFTER filtering.Lance Stout
This allows applications to filter out sensitive information, such as passwords, so that it won't appear in the logs. It does mean that the debug logs will not show the actual received data, and there will be no indication of tampering, unless the filter author explicitly logs and notes that a change was made.
2011-12-12Add parameter docs for add_filter.Lance Stout
2011-12-12Add support for incoming/outgoing filters.Lance Stout
A filter accepts and returns a stanza, but potentially modified. To prevent sending/receiving a stanza, a filter may return None. Incoming: self.add_filter('in', in_filter) Outgoing: self.add_filter('out', out_filter) Filters are applied in the order thay are added. However, you may add an order parameter, which is the place in the list to insert the filter: self.add_filter('in', in_filter, order=0)
2011-12-09Allow sending stanzas on session_end.Lance Stout
May set self.disconnect_wait=True so that all disconnect calls wait for the send queue to empty, unless explicitly overridden with wait=False. The session_end now fires before closing the socket so that final stanzas may be sent, such as unavailable presences for components.
2011-12-07Prevent hang when terminating during delayed connection.Lance Stout
2011-12-04Update the API docs for XMLStreamLance Stout
2011-11-25Send the encoded data (bytes) and not the str, on the socket.Florent Le Coz
2011-11-23Experimental support for handling SSL write errors.Lance Stout
2011-11-20Ensure that reconnection happens properly after connection loss.Lance Stout
Calling reconnect() simultaneously from multiple threads (like when using XEP-0199 keepalive) could break because the connection state can transition and break the state expectations in one of the reconnect() calls.
2011-11-20Convert daemon threads back into normal threads.Lance Stout
This may need to be reverted if CTRL-C handling breaks, but everything works fine so far in testing. Resolves issue #95.
2011-11-19Tidy up logging some moreLance Stout
2011-11-19Fix logging exceptions from formatting issues.Lance Stout
2011-11-19Pass generic connection errors to XMLStream.exception()Lance Stout
2011-11-19Use a list comprehension instead of filter() to work with Python3.Lance Stout
2011-11-19Merge remote-tracking branch 'vijayp/master' into HEADLance Stout
Conflicts: examples/ping.py sleekxmpp/basexmpp.py sleekxmpp/clientxmpp.py sleekxmpp/features/feature_bind/bind.py sleekxmpp/features/feature_mechanisms/mechanisms.py sleekxmpp/plugins/gmail_notify.py sleekxmpp/plugins/jobs.py sleekxmpp/plugins/xep_0009/remote.py sleekxmpp/plugins/xep_0009/rpc.py sleekxmpp/plugins/xep_0012.py sleekxmpp/plugins/xep_0045.py sleekxmpp/plugins/xep_0050/adhoc.py sleekxmpp/plugins/xep_0078/legacyauth.py sleekxmpp/plugins/xep_0085/chat_states.py sleekxmpp/plugins/xep_0199/ping.py sleekxmpp/plugins/xep_0224/attention.py sleekxmpp/xmlstream/handler/waiter.py sleekxmpp/xmlstream/matcher/xmlmask.py sleekxmpp/xmlstream/xmlstream.py Conflicts: examples/ping.py sleekxmpp/basexmpp.py sleekxmpp/clientxmpp.py sleekxmpp/features/feature_bind/bind.py sleekxmpp/features/feature_mechanisms/mechanisms.py sleekxmpp/plugins/gmail_notify.py sleekxmpp/plugins/jobs.py sleekxmpp/plugins/xep_0009/remote.py sleekxmpp/plugins/xep_0009/rpc.py sleekxmpp/plugins/xep_0012.py sleekxmpp/plugins/xep_0045.py sleekxmpp/plugins/xep_0050/adhoc.py sleekxmpp/plugins/xep_0078/legacyauth.py sleekxmpp/plugins/xep_0085/chat_states.py sleekxmpp/plugins/xep_0199/ping.py sleekxmpp/plugins/xep_0224/attention.py sleekxmpp/xmlstream/handler/waiter.py sleekxmpp/xmlstream/matcher/xmlmask.py sleekxmpp/xmlstream/xmlstream.py
2011-11-19double copyVijay Pandurangan
2011-11-19elide unnecessary copyVijay Pandurangan
2011-11-19remove unnecessary copies when only one handler matches. This was taking up ↵Vijay Pandurangan
~ 15% of CPU on moderate load.
2011-11-19Tidy up logging calls.Lance Stout
2011-11-20This change stops sleekxmpp from spending huge amounts of time unnecessarily ↵Vijay Pandurangan
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
2011-11-19This change stops sleekxmpp from spending huge amounts of time unnecessarily ↵Vijay Pandurangan
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
2011-11-14No need to continue processing loop if an error ocurred and ↵Lance Stout
auto_reconnect=False.
2011-11-08Don't just call self.disconnect in self.reconnect.Lance Stout
It messes up the auto_reconnect value and causes the XML processing loop to spin wildly with errors on a stream disconnect.
2011-11-07Continue trying to reconnect, even if the attempt fails.Lance Stout
The transition from disconnected to connected states must be done in a loop in case the transition fails, not just once and hope it worked.
2011-10-08Break reference cycle to fix potential memory leaks for callback handlers.Lance Stout
2011-09-23Fix del_event_handler for Python3 (different semantics for filter()).Lance Stout
Fixes issue #103
2011-09-22Fix regression for handling the case where the server terminates the stream.Lance Stout
The processing loop was continuing to call __read_xml after </stream> was received, which caused SyntaxErrors (can't find starting element). This should fix issue #102
2011-09-19SyntaxError requires a restartNathan Fritz
2011-09-01Add whitespace keepalive option.sleek-1.0-RC21.0-RC2Lance Stout
May be disabled by setting: self.whitespace_keepalive = False The keepalive interval can be adjusted using: self.whitespace_keepalive_interval = 300 The default interval is 5min.