summaryrefslogtreecommitdiff
path: root/sleekxmpp/basexmpp.py
AgeCommit message (Collapse)Author
2012-07-19Fix issue of roster data being split across multiple rosters.Lance Stout
Resolved by always normalizing JIDs to bare form, regardless of if they are JID objects or strings. Also simplified related code to prefer use of JID objects instead of strings so they don't need to be parsed multiple times.
2012-07-10Add session_bind_event threading event.Lance Stout
2012-06-22Add support for reconnecting based on see-other-host stream errors.Lance Stout
2012-06-19PEP8 formatting updates.Lance Stout
2012-06-19Simplify send_presence_subscription()Lance Stout
2012-06-18Simplify tracking last sent presence using outgoing filters.Lance Stout
2012-06-18Add initial support for xml:lang for streams and stanza plugins.Lance Stout
Remaining items are suitable default actions for language supporting interfaces.
2012-06-06Add 'presence' event, raised for all incoming presence stanzas.Lance Stout
2012-05-22Add better certificate handling.Lance Stout
Certificate host names are now matched (using DNS, SRV, XMPPAddr, and Common Name), along with expiration check. Scheduled event to reset the stream once the server's cert expires. Handle invalid cert trust chains gracefully now.
2012-04-26Populate the to attribute for message and presence stanzas if the server ↵Lance Stout
leaves it blank.
2012-04-06Begin experiment with a centralized API callback registry.Lance Stout
The API registry generalizes the node handler system from the xep_0030 plugin so that other plugins can use it.
2012-03-12Handle loading plugins on demand.Lance Stout
Plugins that are referenced as dependencies, but have not been registered now will be imported. Newer plugins should register themselves automatically, but older style plugins will be explicitly registered after import.
2012-03-12Introduce new plugin system.Lance Stout
The new system is backward compatible and will load older style plugins. The new plugin framework allows plugins to track their dependencies, and will auto-enable plugins as needed. Dependencies are tracked via a class-level set named `dependencies` in each plugin. Plugin names are no longer tightly coupled with the plugin class name, Pso EP8 style class names may be used. Disabling plugins is now allowed, but ensuring proper cleanup is left to the plugin implementation. The use of a `post_init()` method is no longer needed for new style plugins, but plugins following the old style will still require a `post_init()` method.
2012-03-10Resolve plugin dependency chains with XEP-0115.Lance Stout
The post_init() system can only reliably handle a single layer of dependencies between plugins, but PEP plugins with XEP-0115 exceed that limit and plugins can be post_init'ed out of order. To resolve this, we will special case XEP-0115 to be post_init'ed first until the new plugin system with dependency tracking is stable.
2012-03-05Cleanup logging when loading a custom plugin.Lance Stout
2012-03-05Ensure that roster nodes aren't empty strings.Lance Stout
This would happen when receiving presence without a 'to' field, which happens when receiving presence from other resources for the same account.
2012-02-17More extraneous import cleanup.Lance Stout
2012-02-17More import cleanups based on pyflakes results.Lance Stout
2012-01-12Don't dump exception logs for XML stream parsing errors.Lance Stout
The exceptions are handled, so we don't need to clutter the output logs.
2011-12-09Fix logging when loading plugins.Lance Stout
2011-12-05More doc updatesLance 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-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-18Fix changed_status eventLance Stout
Once again only fires when a resource's presence show value changes.
2011-11-06Restore original behaviour for auto_authorize and auto_subscribe.Lance Stout
The change to using the new roster broke the original auto_* values and used per-roster versions. The original auto_* values will now set the behaviour globally. Use the per-roster values to override for a specific JID.
2011-08-19Make Iq exceptions more discoverable and simpler to use.Lance Stout
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.
2011-08-18Remove extra, unhelpful presence debug log.Lance Stout
2011-08-12Merge branch 'develop' into rosterLance Stout
Conflicts: setup.py sleekxmpp/clientxmpp.py
2011-08-06Save the stream ID when the stream starts.Lance Stout
2011-08-06If no config for a plugin is given, try using self.plugin_config.Lance Stout
Sleek loads a few plugins by default, which made it difficult to configure or even disable them. Now, if a plugin is registered without any configuration, then sleek will try finding a configuration in self.plugin_config.
2011-08-04Cosmetic PEP8 fixes.Lance Stout
2011-08-04added block as process option and updated documentation. added typical use ↵Nathan Fritz
example to ClientXMPP.
2011-08-04Merge branch 'develop' into rosterLance Stout
Conflicts: setup.py
2011-07-01Continued reorganization and streamlining.Lance Stout
2011-06-30Reorganize features into plugins.Lance Stout
2011-06-16Integrate roster with BaseXMPP.Lance Stout
Last sent stanzas are saved regardless of if the roster is used directly or self.send_presence
2011-06-15Merge branch 'develop' into stream_featuresLance Stout
2011-06-15Fix another roster issue.Lance Stout
Caused by same issue of a JID being in the roster, but with an incomplete entry.
2011-06-14Merge branch 'develop' into rosterLance Stout
Conflicts: sleekxmpp/basexmpp.py
2011-06-14Merge branch 'develop' into stream_featuresLance Stout
2011-06-14Fix issue with components and roster.Lance Stout
If the roster contained a JID, but not any resource presence data, then an error would occur when accessing self.roster[jid]['presence'].
2011-04-14remove roster item state responsibility from clientsNathan Fritz
2011-02-14Merge branch 'develop' into stream_featuresLance Stout
Conflicts: sleekxmpp/xmlstream/stanzabase.py
2011-02-14Reset the roster on disconnect instead of replacing it.Lance Stout
2011-02-14Merge branch 'develop' into rosterLance Stout
Conflicts: sleekxmpp/clientxmpp.py
2011-02-14Remap old method names in a better way.Lance Stout
This should prevent some reference cycles that will cause garbage collection issues.
2011-02-02Merge branch 'develop' into rosterLance Stout
Conflicts: sleekxmpp/basexmpp.py