Ticket numbers in this file can be looked up by visiting http://twistedmatrix.com/trac/ticket/ Core 8.2.0 (2008-12-16) ======================= Features -------- - Reactors are slowly but surely becoming more isolated, thus improving testability (#3198) - FilePath has gained a realpath method, and FilePath.walk no longer infinitely recurses in the case of a symlink causing a self-recursing filesystem tree (#3098) - FilePath's moveTo and copyTo methods now have an option to disable following of symlinks (#3105) - Private APIs are now included in the API documentation (#3268) - hotshot is now the default profiler for the twistd --profile parameter and using cProfile is now documented (#3355, #3356) - Process protocols can now implement a processExited method, which is distinct from processEnded in that it is called immediately when the child has died, instead of waiting for all the file descriptors to be closed (#1291) - twistd now has a --umask option (#966, #3024) - A new deferToThreadPool function exists in twisted.internet.threads (#2845) - There is now an example of writing an FTP server in examples/ftpserver.py (#1579) - A new runAsEffectiveUser function has been added to twisted.python.util (#2607) - twisted.internet.utils.getProcessOutput now offers a mechanism for waiting for the process to actually end, in the event of data received on stderr (#3239) - A fullyQualifiedName function has been added to twisted.python.reflect (#3254) - strports now defaults to managing access to a UNIX socket with a lock; lockfile=0 can be included in the strports specifier to disable this behavior (#2295) - FTPClient now has a 'rename' method (#3335) - FTPClient now has a 'makeDirectory' method (#3500) - FTPClient now has a 'removeFile' method (#3491) - flushWarnings, A new Trial method for testing warnings, has been added (#3487, #3427, #3506) - The log observer can now be configured in .tac files (#3534) Fixes ----- - TLS Session Tickets are now disabled by default, allowing connections to certain servers which hang when an empty session ticket is received (like GTalk) (#3463) - twisted.enterprise.adbapi.ConnectionPool's noisy attribute now defaults to False, as documented (#1806) - Error handling and logging in adbapi is now much improved (#3244) - TCP listeners can now be restarted (#2913) - Doctests can now be rerun with trial's --until-failure option (#2713) - Some memory leaks have been fixed in trial's --until-failure implementation (#3119, #3269) - Trial's summary reporter now prints correct runtime information and handles the case of 0 tests (#3184) - Trial and any other user of the 'namedAny' function now has better error reporting in the case of invalid module names (#3259) - Multiple instances of trial can now run in parallel in the same directory by creating _trial_temp directories with an incremental suffix (#2338) - Trial's failUnlessWarns method now works on Python 2.6 (#3223) - twisted.python.log now hooks into the warnings system in a way compatible with Python 2.6 (#3211) - The GTK2 reactor is now better supported on Windows, but still not passing the entire test suite (#3203) - low-level failure handling in spawnProcess has been improved and no longer leaks file descriptors (#2305, #1410) - Perspective Broker avatars now have their logout functions called in more cases (#392) - Log observers which raise exceptions are no longer removed (#1069) - transport.getPeer now always includes an IP address in the Address returned instead of a hostname (#3059) - Functions in twisted.internet.utils which spawn processes now avoid calling chdir in the case where no working directory is passed, to avoid some obscure permission errors (#3159) - twisted.spread.publish.Publishable no longer corrupts line endings on Windows (#2327) - SelectReactor now properly detects when a TLS/TCP connection has been disconnected (#3218) - twisted.python.lockfile no longer raises an EEXIST OSError and is much better supported on Windows (#3367) - When ITLSTransport.startTLS is called while there is data in the write buffer, TLS negotiation will now be delayed instead of the method raising an exception (#686) - The userAnonymous argument to FTPFactory is now honored (#3390) - twisted.python.modules no longer tries to "fix" sys.modules after an import error, which was just causing problems (#3388) - setup.py no longer attempts to build extension modules when run with Jython (#3410) - AMP boxes can now be sent in IBoxReceiver.startReceivingBoxes (#3477) - AMP connections are closed as soon as a key length larger than 255 is received (#3478) - Log events with timezone offsets between -1 and -59 minutes are now correctly reported as negative (#3515) Deprecations and Removals ------------------------- - Trial's setUpClass and tearDownClass methods are now deprecated (#2903) - problemsFromTransport has been removed in favor of the argument passed to connectionLost (#2874) - The mode parameter to methods of IReactorUNIX and IReactorUNIXDatagram are deprecated in favor of applications taking other security precautions, since the mode of a Unix socket is often not respected (#1068) - Index access on instances of twisted.internet.defer.FirstError has been removed in favor of the subFailure attribute (#3298) - The 'changeDirectory' method of FTPClient has been deprecated in favor of the 'cwd' method (#3491) Other ----- - #3202, #2869, #3225, #2955, #3237, #3196, #2355, #2881, #3054, #2374, #2918, #3210, #3052, #3267, #3288, #2985, #3295, #3297, #2512, #3302, #1222, #2631, #3306, #3116, #3215, #1489, #3319, #3320, #3321, #1255, #2169, #3182, #3323, #3301, #3318, #3029, #3338, #3346, #1144, #3173, #3165, #685, #3357, #2582, #3370, #2438, #1253, #637, #1971, #2208, #979, #1790, #1888, #1882, #1793, #754, #1890, #1931, #1246, #1025, #3177, #2496, #2567, #3400, #2213, #2027, #3415, #1262, #3422, #2500, #3414, #3045, #3111, #2974, #2947, #3222, #2878, #3402, #2909, #3423, #1328, #1852, #3382, #3393, #2029, #3489, #1853, #2026, #2375, #3502, #3482, #3504, #3505, #3507, #2605, #3519, #3520, #3121, #3484, #3439, #3216, #3511, #3524, #3521, #3197, #2486, #2449, #2748, #3381, #3236, #671 Conch 8.2.0 (2008-12-16) ======================== Features -------- - The type of the protocols instantiated by SSHFactory is now parameterized (#3443) Fixes ----- - A file descriptor leak has been fixed (#3213, #1789) - "File Already Exists" errors are now handled more correctly (#3033) - Handling of CR IAC in TelnetClient is now improved (#3305) - SSHAgent is no longer completely unusable (#3332) - The performance of insults.ClientProtocol is now greatly increased by delivering more than one byte at a time to application code (#3386) - Manhole and the conch server no longer need to be run as root when not necessary (#2607) - The value of FILEXFER_ATTR_ACMODTIME has been corrected (#2902) - The management of known_hosts and host key verification has been overhauled (#1376, #1301, #3494, #3496, #1292, #3499) Other ----- - #3193, #1633 Lore 8.2.0 (2008-12-16) ======================= Other ----- - #2207, #2514 Mail 8.2.0 (2008-12-16) ======================= Fixes ----- - The mailmail tool now provides better error messages for usage errors (#3339) - The SMTP protocol implementation now works on PyPy (#2976) Other ----- - #3475 Names 8.2.0 (2008-12-16) ======================== Features -------- - The NAPTR record type is now supported (#2276) Fixes ----- - Make client.Resolver less vulnerable to the Birthday Paradox attack by avoiding sending duplicate queries when it's not necessary (#3347) - client.Resolver now uses a random source port for each DNS request (#3342) - client.Resolver now uses a full 16 bits of randomness for message IDs, instead of 10 which it previously used (#3342) - All record types now have value-based equality and a string representation (#2935) Other ----- - #1622, #3424 Web 8.2.0 (2008-12-16) ====================== Features -------- - The web server can now deal with multi-value headers in the new attributes of Request, requestHeaders and responseHeaders (#165) - There is now a resource-wrapper which implements HTTP Basic and Digest auth in terms of twisted.cred (#696) - It's now possible to limit the number of redirects that client.getPage will follow (#2412) - The directory-listing code no longer uses Woven (#3257) - static.File now supports Range headers with a single range (#1493) - twisted.web now has a rudimentary WSGI container (#2753) - The web server now supports chunked encoding in requests (#3385) Fixes ----- - The xmlrpc client now raises an error when the server sends an empty response (#3399) - HTTPPageGetter no longer duplicates default headers when they're explicitly overridden in the headers parameter (#1382) - The server will no longer timeout clients which are still sending request data (#1903) - microdom's isEqualToNode now returns False when the nodes aren't equal (#2542) Deprecations and Removals ------------------------- - Request.headers and Request.received_headers are not quite deprecated, but they are discouraged in favor of requestHeaders and responseHeaders (#165) Other ----- - #909, #687, #2938, #1152, #2930, #2025, #2683, #3471 Web2 8.2.0 (2008-12-16) ======================= Note: Twisted Web2 is being phased out in preference for Twisted Web, but some maintenance changes have been made. Fixes ----- - The main twisted.web2 docstring now indicates the current state of the project (#2028) - Headers which require unusual bytes are now quoted (#2346) - Some links in the introduction documentation have been fixed (#2552) Words 8.2.0 (2008-12-16) ======================== Feature ------- - There is now a standalone XMPP router included in twisted.words: it can be used with the 'twistd xmpp-router' command line (#3407) - A server factory for Jabber XML Streams has been added (#3435) - Domish now allows for iterating child elements with specific qualified names (#2429) - IRCClient now has a 'back' method which removes the away status (#3366) - IRCClient now has a 'whois' method (#3133) Fixes ----- - The IRC Client implementation can now deal with compound mode changes (#3230) - The MSN protocol implementation no longer requires the CVR0 protocol to be included in the VER command (#3394) - In the IRC server implementation, topic messages will no longer be sent for a group which has no topic (#2204) - An infinite loop (which caused infinite memory usage) in irc.split has been fixed. This was triggered any time a message that starts with a delimiter was sent (#3446) - Jabber's toResponse now generates a valid stanza even when stanzaType is not specified (#3467) - The lifetime of authenticator instances in XmlStreamServerFactory is no longer artificially extended (#3464) Other ----- - #3365 Core 8.1.0 (2008-05-18) ======================= Features -------- - twisted.internet.error.ConnectionClosed is a new exception which is the superclass of ConnectionLost and ConnectionDone (#3137) - Trial's CPU and memory performance should be better now (#3034) - twisted.python.filepath.FilePath now has a chmod method (#3124) Fixes ----- - Some reactor re-entrancy regressions were fixed (#3146, #3168) - A regression was fixed whereby constructing a Failure for an exception and traceback raised out of a Pyrex extension would fail (#3132) - CopyableFailures in PB can again be created from CopiedFailures (#3174) - FilePath.remove, when called on a FilePath representing a symlink to a directory, no longer removes the contents of the targeted directory, and instead removes the symlink (#3097) - FilePath now has a linkTo method for creating new symlinks (#3122) - The docstring for Trial's addCleanup method now correctly specifies when cleanup functions are run (#3131) - assertWarns now deals better with multiple identical warnings (#2904) - Various windows installer bugs were fixed (#3115, #3144, #3150, #3151, #3164) - API links in the howto documentation have been corrected (#3130) - The Win32 Process transport object now has a pid attribute (#1836) - A doc bug in the twistd plugin howto which would inevitably lead to confusion was fixed (#3183) - A regression breaking IOCP introduced after the last release was fixed (#3200) Deprecations and Removals ------------------------- - mktap is now fully deprecated, and will emit DeprecationWarnings when used (#3127) Other ----- - #3079, #3118, #3120, #3145, #3069, #3149, #3186, #3208, #2762 Conch 8.1.0 (2008-05-18) ======================== Fixes ----- - A regression was fixed whereby the publicKeys and privateKeys attributes of SSHFactory would not be interpreted as strings (#3141) - The sshsimpleserver.py example had a minor bug fix (#3135) - The deprecated mktap API is no longer used (#3127) - An infelicity was fixed whereby a NameError would be raised in certain circumstances during authentication when a ConchError should have been (#3154) - A workaround was added to conch.insults for a bug in gnome-terminal whereby it would not scroll correctly (#3189) Lore 8.1.0 (2008-05-18) ======================= Fixes ----- - The deprecated mktap API is no longer used (#3127) News 8.1.0 (2008-05-18) ======================= Fixes ----- - The deprecated mktap API is no longer used (#3127) Web 8.1.0 (2008-05-18) ====================== Fixes ----- - Fixed an XMLRPC bug whereby sometimes a callRemote Deferred would accidentally be fired twice when a connection was lost during the handling of a response (#3152) - Fixed a bug in the "Using Twisted Web" document which prevented an example resource from being renderable (#3147) - The deprecated mktap API is no longer used (#3127) Words 8.1.0 (2008-05-18) ======================== Features -------- - JID objects now have a nice __repr__ (#3156) - Extending XMPP protocols is now easier (#2178) Fixes ----- - The deprecated mktap API is no longer used (#3127) - A bug whereby one-time XMPP observers would be enabled permanently was fixed (#3066) Mail 8.1.0 (2008-05-18) ======================= Fixes ----- - The deprecated mktap API is no longer used (#3127) Names 8.1.0 (2008-05-18) ======================== Fixes ----- - The deprecated mktap API is no longer used (#3127) Web2 8.1.0 (2008-05-18) ======================= Fixes ----- - The deprecated mktap API is no longer used (#3127) Core 8.0.1 (2008-03-26) ======================= Fixes ----- - README no longer refers to obsolete trial command line option - twistd no longer causes a bizarre DeprecationWarning about mktap Core 8.0.0 (2008-03-17) ======================= Features -------- - The IOCP reactor has had many changes and is now greatly improved (#1760, #3055) - The main Twisted distribution is now easy_installable (#1286, #3110) - twistd can now profile with cProfile (#2469) - twisted.internet.defer contains a DeferredFilesystemLock which gives a Deferred interface to lock file acquisition (#2180) - twisted.python.modules is a new system for representing and manipulating module paths (i.e. sys.path) (#1951) - twisted.internet.fdesc now contains a writeToFD function, along with other minor fixes (#2419) - twisted.python.usage now allows optional type enforcement (#739) - The reactor now has a blockingCallFromThread method for non-reactor threads to use to wait for a reactor-scheduled call to return a result (#1042, #3030) - Exceptions raised inside of inlineCallbacks-using functions now have a better chance of coming with a meaningful traceback (#2639, #2803) - twisted.python.randbytes now contains code for generating secure random bytes (#2685) - The classes in twisted.application.internet now accept a reactor parameter for specifying the reactor to use for underlying calls to allow for better testability (#2937) - LoopingCall now allows you to specify the reactor to use to schedule new calls, allowing much better testing techniques (#2633, #2634) - twisted.internet.task.deferLater is a new API for scheduling calls and getting deferreds which are fired with their results (#1875) - objgrep now knows how to search through deque objects (#2323) - twisted.python.log now contains a Twisted log observer which can forward messages to the Python logging system (#1351) - Log files now include seconds in the timestamps (#867) - It is now possible to limit the number of log files to create during log rotation (#1095) - The interface required by the log context system is now documented as ILoggingContext, and abstract.FileDescriptor now declares that it implements it (#1272) - There is now an example cred checker that uses a database via adbapi (#460) - The epoll reactor is now documented in the choosing-reactors howto (#2539) - There were improvements to the client howto (#222) - Int8Receiver was added (#2315) - Various refactorings to AMP introduced better testability and public interfaces (#2657, #2667, #2656, #2664, #2810) - twisted.protocol.policies.TrafficLoggingFactory now has a resetCounter method (#2757) - The FTP client can be told which port range within which to bind passive transfer ports (#1904) - twisted.protocols.memcache contains a new asynchronous memcache client (#2506, #2957) - PB now supports anonymous login (#439, #2312) - twisted.spread.jelly now supports decimal objects (#2920) - twisted.spread.jelly now supports all forms of sets (#2958) - There is now an interface describing the API that process protocols must provide (#3020) - Trial reporting to core unittest TestResult objects has been improved (#2495) - Trial's TestCase now has an addCleanup method which allows easy setup of tear-down code (#2610, #2899) - Trial's TestCase now has an assertIsInstance method (#2749) - Trial's memory footprint and speed are greatly improved (#2275) - At the end of trial runs, "PASSED" and "FAILED" messages are now colorized (#2856) - Tests which leave global state around in the reactor will now fail in trial. A new option, --unclean-warnings, will convert these errors back into warnings (#2091) - Trial now has a --without-module command line for testing code in an environment that lacks a particular Python module (#1795) - Error reporting of failed assertEquals assertions now has much nicer formatting (#2893) - Trial now has methods for monkey-patching (#2598) - Trial now has an ITestCase (#2898, #1950) - The trial reporter API now has a 'done' method which is called at the end of a test run (#2883) - TestCase now has an assertWarns method which allows testing that functions emit warnings (#2626, #2703) - There are now no string exceptions in the entire Twisted code base (#2063) - There is now a system for specifying credentials checkers with a string (#2570) Fixes ----- - Some tests which were asserting the value of stderr have been changed because Python uncontrollably writes bytes to stderr (#2405) - Log files handle time zones with DST better (#2404) - Subprocesses using PTYs on OS X that are handled by Twisted will now be able to more reliably write the final bytes before they exit, allowing Twisted code to more reliably receive them (#2371, #2858) - Trial unit test reporting has been improved (#1901) - The kqueue reactor handles connection failures better (#2172) - It's now possible to run "trial foo/bar/" without an exception: trailing slashes no longer cause problems (#2005) - cred portals now better deal with implementations of inherited interfaces (#2523) - FTP error handling has been improved (#1160, 1107) - Trial behaves better with respect to file locking on Windows (#2482) - The FTP server now gives a better error when STOR is attempted during an anonymous session (#1575) - Trial now behaves better with tests that use the reactor's threadpool (#1832) - twisted.python.reload now behaves better with new-style objects (#2297) - LogFile's defaultMode parameter is now better implemented, preventing potential security exploits (#2586) - A minor obscure leak in thread pools was corrected (#1134) - twisted.internet.task.Clock now returns the correct DelayedCall from callLater, instead of returning the one scheduled for the furthest in the future (#2691) - twisted.spread.util.FilePager no longer unnecessarily buffers data in memory (#1843, 2321) - Asking for twistd or trial to use an unavailable reactor no longer prints a traceback (#2457) - System event triggers have fewer obscure bugs (#2509) - Plugin discovery code is much better behaved, allowing multiple installations of a package with plugins (#2339, #2769) - Process and PTYProcess have been merged and some minor bugs have been fixed (#2341) - The reactor has less global state (#2545) - Failure can now correctly represent and format errors caused by string exceptions (#2830) - The epoll reactor now has better error handling which now avoids the bug causing 100% CPU usage in some cases (#2809) - Errors raised during trial setUp or tearDown methods are now handled better (#2837) - A problem when deferred callbacks add new callbacks to the deferred that they are a callback of was fixed (#2849) - Log messages that are emitted during connectionMade now have the protocol prefix correctly set (#2813) - The string representation of a TCP Server connection now contains the actual port that it's bound to when it was configured to listen on port 0 (#2826) - There is better reporting of error codes for TCP failures on Windows (#2425) - Process spawning has been made slightly more robust by disabling garbage collection temporarily immediately after forking so that finalizers cannot be executed in an unexpected environment (#2483) - namedAny now detects import errors better (#698) - Many fixes and improvements to the twisted.python.zipstream module have been made (#2996) - FilePager no longer blows up on empty files (#3023) - twisted.python.util.FancyEqMixin has been improved to cooperate with objects of other types (#2944) - twisted.python.FilePath.exists now restats to prevent incorrect result (#2896) - twisted.python.util.mergeFunctionMetadata now also merges the __module__ attribute (#3049) - It is now possible to call transport.pauseProducing within connectionMade on TCP transports without it being ignored (#1780) - twisted.python.versions now understands new SVN metadata format for fetching the SVN revision number (#3058) - It's now possible to use reactor.callWhenRunning(reactor.stop) on gtk2 and glib2 reactors (#3011) Deprecations and removals ------------------------- - twisted.python.timeoutqueue is now deprecated (#2536) - twisted.enterprise.row and twisted.enterprise.reflector are now deprecated (#2387) - twisted.enterprise.util is now deprecated (#3022) - The dispatch and dispatchWithCallback methods of ThreadPool are now deprecated (#2684) - Starting the same reactor multiple times is now deprecated (#1785) - The visit method of various test classes in trial has been deprecated (#2897) - The --report-profile option to twistd and twisted.python.dxprofile are deprecated (#2908) - The upDownError method of Trial reporters is deprecated (#2883) Other ----- - #2396, #2211, #1921, #2378, #2247, #1603, #2463, #2530, #2426, #2356, #2574, - #1844, #2575, #2655, #2640, #2670, #2688, #2543, #2743, #2744, #2745, #2746, - #2742, #2741, #1730, #2831, #2216, #1192, #2848, #2767, #1220, #2727, #2643, - #2669, #2866, #2867, #1879, #2766, #2855, #2547, #2857, #2862, #1264, #2735, - #942, #2885, #2739, #2901, #2928, #2954, #2906, #2925, #2942, #2894, #2793, - #2761, #2977, #2968, #2895, #3000, #2990, #2919, #2969, #2921, #3005, #421, - #3031, #2940, #1181, #2783, #1049, #3053, #2847, #2941, #2876, #2886, #3086, - #3095, #3109 Conch 8.0.0 (2008-03-17) ======================== Features -------- - Add DEC private mode manipulation methods to ITerminalTransport. (#2403) Fixes ----- - Parameterize the scheduler function used by the insults TopWindow widget. This change breaks backwards compatibility in the TopWindow initializer. (#2413) - Notify subsystems, like SFTP, of connection close. (#2421) - Change the process file descriptor "connection lost" code to reverse the setNonBlocking operation done during initialization. (#2371) - Change ConsoleManhole to wait for connectionLost notification before stopping the reactor. (#2123, #2371) - Make SSHUserAuthServer.ssh_USERAUTH_REQUEST return a Deferred. (#2528) - Manhole's initializer calls its parent class's initializer with its namespace argument. (#2587) - Handle ^C during input line continuation in manhole by updating the prompt and line buffer correctly. (#2663) - Make twisted.conch.telnet.Telnet by default reject all attempts to enable options. (#1967) - Reduce the number of calls into application code to deliver application-level data in twisted.conch.telnet.Telnet.dataReceived (#2107) - Fix definition and management of extended attributes in conch file transfer. (#3010) - Fix parsing of OpenSSH-generated RSA keys with differing ASN.1 packing style. (#3008) - Fix handling of missing $HOME in twisted.conch.client.unix. (#3061) Misc ---- - #2267, #2378, #2604, #2707, #2341, #2685, #2679, #2912, #2977, #2678, #2709 #2063, #2847 Lore 8.0.0 (2008-03-17) ======================= Fixes ----- - Change twisted.lore.tree.setIndexLin so that it removes node with index-link class when the specified index filename is None. (#812) - Fix the conversion of the list of options in man pages to Lore format. (#3017) - Fix conch man pages generation. (#3075) - Fix management of the interactive command tag in man2lore. (#3076) Misc ---- - #2847 News 8.0.0 (2008-03-17) ======================= Misc ---- - Remove all "API Stability" markers (#2847) Runner 8.0.0 (2008-03-17) ========================= Misc ---- - Remove all "API Stability" markers (#2847) Web 8.0.0 (2008-03-17) ====================== Features -------- - Add support to twisted.web.client.getPage for the HTTP HEAD method. (#2750) Fixes ----- - Set content-type in xmlrpc responses to "text/xml" (#2430) - Add more error checking in the xmlrpc.XMLRPC render method, and enforce POST requests. (#2505) - Reject unicode input to twisted.web.client._parse to reject invalid unicode URLs early. (#2628) - Correctly re-quote URL path segments when generating an URL string to return from Request.prePathURL. (#2934) - Make twisted.web.proxy.ProxyClientFactory close the connection when reporting a 501 error. (#1089) - Fix twisted.web.proxy.ReverseProxyResource to specify the port in the host header if different from 80. (#1117) - Change twisted.web.proxy.ReverseProxyResource so that it correctly encodes the request URI it sends on to the server for which it is a proxy. (#3013) - Make "twistd web --personal" use PBServerFactory (#2681) Misc ---- - #1996, #2382, #2211, #2633, #2634, #2640, #2752, #238, #2905 Words 8.0.0 (2008-03-17) ======================== Features -------- - Provide function for creating XMPP response stanzas. (#2614, #2614) - Log exceptions raised in Xish observers. (#2616) - Add 'and' and 'or' operators for Xish XPath expressions. (#2502) - Make JIDs hashable. (#2770) Fixes ----- - Respect the hostname and servername parameters to IRCClient.register. (#1649) - Make EventDispatcher remove empty callback lists. (#1652) - Use legacy base64 API to support Python 2.3 (#2461) - Fix support of DIGEST-MD5 challenge parsing with multi-valued directives. (#2606) - Fix reuse of dict of prefixes in domish.Element.toXml (#2609) - Properly process XMPP stream headers (#2615) - Use proper namespace for XMPP stream errors. (#2630) - Properly parse XMPP stream errors. (#2771) - Fix toResponse for XMPP stanzas without an id attribute. (#2773) - Move XMPP stream header procesing to authenticators. (#2772) Misc ---- - #2617, #2640, #2741, #2063, #2570, #2847 Mail 8.0.0 (2008-03-17) ======================= Features -------- - Support CAPABILITY responses that include atoms of the form "FOO" and "FOO=BAR" in IMAP4 (#2695) - Parameterize error handling behavior of imap4.encoder and imap4.decoder. (#2929) Fixes ----- - Handle empty passwords in SMTP auth. (#2521) - Fix IMAP4Client's parsing of literals which are not preceeded by whitespace. (#2700) - Handle MX lookup suceeding without answers. (#2807) - Fix issues with aliases(5) process support. (#2729) Misc ---- - #2371, #2123, #2378, #739, #2640, #2746, #1917, #2266, #2864, #2832, #2063, #2865, #2847 Names 8.0.0 (2008-03-17) ======================== Fixes ----- - Refactor DNSDatagramProtocol and DNSProtocol to use same base class (#2414) - Change Resolver to query specified nameservers in specified order, instead of reverse order. (#2290) - Make SRVConnector work with bad results and NXDOMAIN responses. (#1908, #2777) - Handle write errors happening in dns queries, to have correct deferred failures. (#2492) - Fix the value of OP_NOTIFY and add a definition for OP_UPDATE. (#2945) Misc ---- - #2685, #2936, #2581, #2847