1
Ticket numbers in this file can be looked up by visiting
2
http://twistedmatrix.com/trac/ticket/<number>
4
Twisted Core 10.0.0 (2010-03-01)
5
================================
9
- The twistd man page now has a SIGNALS section. (#689)
11
- reactor.spawnProcess now will not emit a PotentialZombieWarning
12
when called before reactor.run, and there will be no potential for
13
zombie processes in this case. (#2078)
15
- High-throughput applications based on Perspective Broker should now
16
run noticably faster thanks to the use of a more efficient decoding
17
function in Twisted Spread. (#2310)
19
- Documentation for trac-post-commit-hook functionality in svn-dev
22
- twisted.protocols.socks.SOCKSv4 now supports the SOCKSv4a protocol.
25
- Trial can now output test results according to the subunit
26
protocol, as long as Subunit is installed (see
27
https://launchpad.net/subunit). (#4004)
29
- twisted.protocols.amp now provides a ListOf argument type which can
30
be composed with some other argument types to create a zero or more
31
element sequence of that type. (#4116)
33
- If returnValue is invoked outside of a function decorated with
34
@inlineCallbacks, but causes a function thusly decorated to exit, a
35
DeprecationWarning will be emitted explaining this potentially
36
confusing behavior. In a future release, this will cause an
39
- twisted.python.logfile.BaseLogFile now has a reopen method allowing
40
you to use an external logrotate mechanism. (#4255)
44
- FTP.ftp_NLST now handles requests on invalid paths in a way
45
consistent with RFC 959. (#1342)
47
- twisted.python.util.initgroups now calls the low-level C initgroups
48
by default if available: the python version can create lots of I/O
49
with certain authentication setup to retrieve all the necessary
52
- startLogging now does nothing on subsequent invocations, thus
53
fixing a terrible infinite recursion bug that's only on edge case.
56
- Stringify non-string data to NetstringReceiver.sendString before
57
calculating the length so that the calculated length is equal to
58
the actual length of the transported data. (#3299)
60
- twisted.python.win32.cmdLineQuote now correctly quotes empty
61
strings arguments (#3876)
63
- Change the behavior of the Gtk2Reactor to register only one source
64
watch for each file descriptor, instead of one for reading and one
65
for writing. In particular, it fixes a bug with Glib under Windows
66
where we failed to notify when a client is connected. (#3925)
68
- Twisted Trial no longer crashes if it can't remove an old
69
_trial_temp directory. (#4020)
71
- The optional _c_urlarg extension now handles unquote("") correctly
72
on platforms where malloc(0) returns NULL, such as AIX. It also
73
compiles with less warnings. (#4142)
75
- On POSIX, child processes created with reactor.spawnProcess will no
76
longer automatically ignore the signals which the parent process
77
has set to be ignored. (#4199)
79
- All SOCKSv4a tests now use a dummy reactor with a deterministic
80
resolve method. (#4275)
82
- Prevent extraneous server, date and content-type headers in proxy
85
Deprecations and Removals
86
-------------------------
87
- twisted.internet.error.PotentialZombieWarning is now deprecated.
90
- twisted.test.time_helpers is now deprecated. (#3719)
92
- The deprecated connectUDP method of IReactorUDP has now been
95
- twisted.trial.unittest.TestCase now ignores the previously
96
deprecated setUpClass and tearDownClass methods. (#4175)
100
- #917, #2406, #2481, #2608, #2689, #2884, #3056, #3082, #3199,
101
#3480, #3592, #3718, #3935, #4066, #4083, #4154, #4166, #4169,
102
#4176, #4183, #4186, #4188, #4189, #4194, #4201, #4204, #4209,
103
#4222, #4234, #4235, #4238, #4240, #4245, #4251, #4264, #4268,
107
Twisted Conch 10.0.0 (2010-03-01)
108
=================================
112
- twisted.conch.checkers.SSHPublicKeyDatabase now looks in the
113
correct user directory for authorized_keys files. (#3984)
115
- twisted.conch.ssh.SSHUserAuthClient now honors preferredOrder when
116
authenticating. (#4266)
120
- #2391, #4203, #4265
123
Twisted Lore 10.0.0 (2010-03-01)
124
================================
131
Twisted Mail 10.0.0 (2010-03-01)
132
================================
136
- twisted.mail.smtp.ESMTPClient and
137
twisted.mail.smtp.LOGINAuthenticator now implement the (obsolete)
138
LOGIN SASL mechanism according to the draft specification. (#4031)
140
- twisted.mail.imap4.IMAP4Client will no longer misparse all html-
141
formatted message bodies received in response to a fetch command.
144
- The regression in IMAP4 search handling of "OR" and "NOT" terms has
149
- #4028, #4170, #4200
152
Twisted Names 10.0.0 (2010-03-01)
153
=================================
157
- twisted.names.root.Resolver no longer leaks UDP sockets while
158
resolving names. (#970)
160
Deprecations and Removals
161
-------------------------
162
- Several top-level functions in twisted.names.root are now
170
Twisted Pair 10.0.0 (2010-03-01)
171
================================
178
Twisted Runner 10.0.0 (2010-03-01)
179
==================================
186
Twisted Web 10.0.0 (2010-03-01)
187
===============================
191
- Twisted Web in 60 Seconds, a series of short tutorials with self-
192
contained examples on a range of common web topics, is now a part
193
of the Twisted Web howto documentation. (#4192)
197
- Data and File from twisted.web.static and
198
twisted.web.distrib.UserDirectory will now only generate a 200
199
response for GET or HEAD requests.
200
twisted.web.client.HTTPPageGetter will no longer ignore the case of
201
a request method when considering whether to apply special HEAD
202
processing to a response. (#446)
204
- twisted.web.http.HTTPClient now supports multi-line headers.
207
- Resources served via twisted.web.distrib will no longer encounter a
208
Banana error when writing more than 640kB at once to the request
211
- The Error, PageRedirect, and InfiniteRedirection exception in
212
twisted.web now initialize an empty message parameter by mapping
213
the HTTP status code parameter to a descriptive string. Previously
214
the lookup would always fail, leaving message empty. (#3806)
216
- The 'wsgi.input' WSGI environment object now supports -1 and None
217
as arguments to the read and readlines methods. (#4114)
219
- twisted.web.wsgi doesn't unquote QUERY_STRING anymore, thus
220
complying with the WSGI reference implementation. (#4143)
222
- The HTTP proxy will no longer pass on keep-alive request headers
223
from the client, preventing pages from loading then "hanging"
224
(leaving the connection open with no hope of termination). (#4179)
226
Deprecations and Removals
227
-------------------------
228
- Remove '--static' option from twistd web, that served as an alias
229
for the '--path' option. (#3907)
233
- #3784, #4216, #4242
236
Twisted Words 10.0.0 (2010-03-01)
237
=================================
241
- twisted.words.protocols.irc.IRCClient.irc_MODE now takes ISUPPORT
242
parameters into account when parsing mode messages with arguments
243
that take parameters (#3296)
247
- When twisted.words.protocols.irc.IRCClient's versionNum and
248
versionEnv attributes are set to None, they will no longer be
249
included in the client's response to CTCP VERSION queries. (#3660)
251
- twisted.words.protocols.jabber.xmlstream.hashPassword now only
252
accepts unicode as input (#3741, #3742, #3847)
256
- #2503, #4066, #4261
259
Twisted Core 9.0.0 (2009-11-24)
260
===============================
264
- LineReceiver.clearLineBuffer now returns the bytes that it cleared (#3573)
265
- twisted.protocols.amp now raises InvalidSignature when bad arguments are
266
passed to Command.makeArguments (#2808)
267
- IArgumentType was added to represent an existing but previously unspecified
268
interface in amp (#3468)
269
- Obscure python tricks have been removed from the finger tutorials (#2110)
270
- The digest auth implementations in twisted.web and twisted.protocolos.sip
271
have been merged together in twisted.cred (#3575)
272
- FilePath and ZipPath now has a parents() method which iterates up all of its
274
- reactors which support threads now have a getThreadPool method (#3591)
275
- The MemCache client implementation now allows arguments to the "stats"
277
- The MemCache client now has a getMultiple method which allows fetching of
278
multiple values (#3171)
279
- twisted.spread.jelly can now unserialize some new-style classes (#2950)
280
- twisted.protocols.loopback.loopbackAsync now accepts a parameter to control
281
the data passed between client and server (#3820)
282
- The IOCP reactor now supports SSL (#593)
283
- Tasks in a twisted.internet.task.Cooperator can now be paused, resumed, and
285
- AmpList arguments can now be made optional (#3891)
286
- The syslog output observer now supports log levels (#3300)
287
- LoopingCall now supports reporting the number of intervals missed if it
288
isn't able to schedule calls fast enough (#3671)
292
- The deprecated md5 and sha modules are no longer used if the stdlib hashlib
293
module is available (#2763)
294
- An obscure deadlock involving waking up the reactor within signal handlers
295
in particular threads was fixed (#1997)
296
- The passivePortRange attribute of FTPFactory is now honored (#3593)
297
- TestCase.flushWarnings now flushes warnings even if they were produced by a
298
file that was renamed since it was byte compiled (#3598)
299
- Some internal file descriptors are now marked as close-on-exec, so these will
300
no longer be leaked to child processes (#3576)
301
- twisted.python.zipstream now correctly extracts the first file in a directory
302
as a file, and not an empty directory (#3625)
303
- proxyForInterface now returns classes which correctly *implement* interfaces
304
rather than *providing* them (#3646)
305
- SIP Via header parameters should now be correctly generated (#2194)
306
- The Deferred returned by stopListening would sometimes previously never fire
307
if an exception was raised by the underlying file descriptor's connectionLost
308
method. Now the Deferred will fire with a failure (#3654)
309
- The command-line tool "manhole" should now work with newer versions of pygtk
311
- When a DefaultOpenSSLContextFactory is instantiated with invalid parameters,
312
it will now raise an exception immediately instead of waiting for the first
314
- Twisted command line scripts should now work when installed in a virtualenv
316
- Trial will no longer delete temp directories which it did not create (#3481)
317
- Processes started on Windows should now be cleaned up properly in more cases
319
- Certain misbehaving importers will no longer cause twisted.python.modules
320
(and thus trial) to raise an exception, but rather issue a warning (#3913)
321
- MemCache client protocol methods will now fail when the transport has been
323
- In the AMP method callRemoteString, the requiresAnswer parameter is now
325
- Spawning a "script" (a file which starts with a #! line) on Windows running
326
Python 2.6 will now work instead of raising an exception about file mode
328
- FilePath's walk method now calls its "descend" parameter even on the first
329
level of children, instead of only on grandchildren. This allows for better
330
symlink cycle detection (#3911)
331
- Attempting to write unicode data to process pipes on Windows will no longer
332
result in arbitrarily encoded messages being written to the pipe, but instead
333
will immediately raise an error (#3930)
334
- The various twisted command line utilities will no longer print
335
ModuleType.__doc__ when Twisted was installed with setuptools (#4030)
336
- A Failure object will now be passed to connectionLost on stdio connections
337
on Windows, instead of an Exception object (#3922)
339
Deprecations and Removals
340
-------------------------
341
- twisted.persisted.marmalade was deleted after a long period of deprecation
343
- Some remaining references to the long-gone plugins.tml system were removed
345
- SSLv2 is now disabled by default, but it can be re-enabled explicitly
347
- twisted.python.plugin has been removed (#1911)
348
- reactor.run will now raise a ReactorAlreadyRunning exception when it is
349
called reentrantly instead of warning a DeprecationWarning (#1785)
350
- twisted.spread.refpath is now deprecated because it is unmaintained,
351
untested, and has dubious value (#3723)
352
- The unused --quiet flag has been removed from the twistd command (#3003)
356
- #3545, #3490, #3544, #3537, #3455, #3315, #2281, #3564, #3570, #3571, #3486,
357
#3241, #3599, #3220, #1522, #3611, #3596, #3606, #3609, #3602, #3637, #3647,
358
#3632, #3675, #3673, #3686, #2217, #3685, #3688, #2456, #506, #3635, #2153,
359
#3581, #3708, #3714, #3717, #3698, #3747, #3704, #3707, #3713, #3720, #3692,
360
#3376, #3652, #3695, #3735, #3786, #3783, #3699, #3340, #3810, #3822, #3817,
361
#3791, #3859, #2459, #3677, #3883, #3894, #3861, #3822, #3852, #3875, #2722,
362
#3768, #3914, #3885, #2719, #3905, #3942, #2820, #3990, #3954, #1627, #2326,
363
#2972, #3253, #3937, #4058, #1200, #3639, #4079, #4063, #4050
366
Twisted Conch 9.0.0 (2009-11-24)
367
================================
371
- The SSH key parser has been removed and conch now uses pyASN1 to parse keys.
372
This should fix a number of cases where parsing a key would fail, but it now
373
requires users to have pyASN1 installed (#3391)
374
- The time field on SFTP file listings should now be correct (#3503)
375
- The day field on SFTP file listings should now be correct on Windows (#3503)
376
- The "cftp" sftp client now truncates files it is uploading over (#2519)
377
- The telnet server protocol can now properly respond to subnegotiation
379
- Tests and factoring of the SSHv2 server implementation are now much better
381
- The SSHv2 server now sends "exit-signal" messages to the client, instead of
382
raising an exception, when a process dies due to a signal (#2687)
383
- cftp's client-side "exec" command now uses /bin/sh if the current user has
386
Deprecations and Removals
387
-------------------------
388
- The buggy SSH connection sharing feature of the SSHv2 client was removed
390
- Use of strings and PyCrypto objects to represent keys is deprecated in favor
391
of using Conch Key objects (#2682)
395
- #3548, #3537, #3551, #3220, #3568, #3689, #3709, #3809, #2763, #3540, #3750,
396
#3897, #3813, #3871, #3916, #4047, #3940, #4050
399
Twisted Lore 9.0.0 (2009-11-24)
400
===============================
404
- Python source listings now include line numbers (#3486)
408
- Lore now uses minidom instead of Twisted's microdom, which incidentally
409
fixes some Lore bugs such as throwing away certain whitespace
411
- Lore's "lint" command should no longer break on documents with links in them
414
Deprecations and Removals
415
-------------------------
416
- Lore no longer uses the ancient "tml" Twisted plugin system (#1911)
420
- #3565, #3246, #3540, #3750, #4050
423
Twisted Mail 9.0.0 (2009-11-24)
424
===============================
428
- maildir.StringListMailbox, an in-memory maildir mailbox, now supports
429
deletion, undeletion, and syncing (#3547)
430
- SMTPClient's callbacks are now more completely documented (#684)
434
- Parse UNSEEN response data and include it in the result of
435
IMAP4Client.examine (#3550)
436
- The IMAP4 client now delivers more unsolicited server responses to callbacks
437
rather than ignoring them, and also won't ignore solicited responses that
438
arrive on the same line as an unsolicited one (#1105)
439
- Several bugs in the SMTP client's idle timeout support were fixed (#3641,
441
- A case where the SMTP client could skip some recipients when retrying
442
delivery has been fixed (#3638)
443
- Errors during certain data transfers will no longer be swallowed. They will
444
now bubble up to the higher-level API (such as the sendmail function) (#3642)
445
- Escape sequences inside quoted strings in IMAP4 should now be parsed
446
correctly by the IMAP4 server protocol (#3659)
447
- The "imap4-utf-7" codec that is registered by twisted.mail.imap4 had a number
448
of fixes that allow it to work better with the Python codecs system, and to
449
actually work (#3663)
450
- The Maildir implementation now ensures time-based ordering of filenames so
451
that the lexical sorting of messages matches the order in which they were
453
- SASL PLAIN credentials generated by the IMAP4 protocol implementations
454
(client and server) should now be RFC-compliant (#3939)
455
- Searching for a set of sequences using the IMAP4 "SEARCH" command should
456
now work on the IMAP4 server protocol implementation. This at least improves
457
support for the Pine mail client (#1977)
461
- #2763, #3647, #3750, #3819, #3540, #3846, #2023, #4050
464
Twisted Names 9.0.0 (2009-11-24)
465
================================
467
Deprecations and Removals
468
-------------------------
469
- client.ThreadedResolver is deprecated in favor of
470
twisted.internet.base.ThreadedResolver (#3710)
474
- #3540, #3560, #3712, #3750, #3990
477
Twisted News 9.0.0 (2009-11-24)
478
===============================
485
Twisted Pair 9.0.0 (2009-11-24)
486
===============================
493
Twisted Runner 9.0.0 (2009-11-24)
494
=================================
498
- procmon.ProcessMonitor.addProcess now accepts an 'env' parameter which allows
499
users to specify the environment in which a process will be run (#3691)
506
Twisted Web 9.0.0 (2009-11-24)
507
==============================
511
- There is now an iweb.IRequest interface which specifies the interface that
512
request objects provide (#3416)
513
- downloadPage now supports the same cookie, redirect, and timeout features
514
that getPage supports (#2971)
515
- A chapter about WSGI has been added to the twisted.web documentation (#3510)
516
- The HTTP auth support in the web server now allows anonymous sessions by
517
logging in with ANONYMOUS credentials when no Authorization header is
518
provided in a request (#3924, #3936)
519
- HTTPClientFactory now accepts a parameter to enable a common deviation from
520
the HTTP 1.1 standard by responding to redirects in a POSTed request with a
521
GET instead of another POST (#3624)
522
- A new basic HTTP/1.1 client API is included in twisted.web.client.Agent
527
- Requests for "insecure" children of a static.File (such as paths containing
528
encoded directory separators) will now result in a 404 instead of a 500
530
- When specifying a followRedirect argument to the getPage function, the state
531
of redirect-following for other getPage calls should now be unaffected. It
532
was previously overwriting a class attribute which would affect outstanding
533
getPage calls (#3192)
534
- Downloading an URL of the form "http://example.com:/" will now work,
535
ignoring the extraneous colon (#2402)
536
- microdom's appendChild method will no longer issue a spurious warning, and
537
microdom's methods in general should now issue more meaningful exceptions
538
when invalid parameters are passed (#3421)
539
- WSGI applications will no longer have spurious Content-Type headers added to
540
their responses by the twisted.web server. In addition, WSGI applications
541
will no longer be able to specify the server-restricted headers Server and
543
- http_headers.Headers now normalizes the case of raw headers passed directly
544
to it in the same way that it normalizes the headers passed to setRawHeaders
546
- The distrib module no longer relies on the deprecated woven package (#3559)
547
- twisted.web.domhelpers now works with both microdom and minidom (#3600)
548
- twisted.web servers will now ignore invalid If-Modified-Since headers instead
549
of returning a 500 error (#3601)
550
- Certain request-bound memory and file resources are cleaned up slightly
551
sooner by the request when the connection is lost (#1621, #3176)
552
- xmlrpclib.DateTime objects should now correctly round-trip over twisted.web's
553
XMLRPC support in all supported versions of Python, and errors during error
554
serialization will no longer hang a twisted.web XMLRPC response (#2446)
555
- request.content should now always be seeked to the beginning when
556
request.process is called, so application code should never need to seek
557
back manually (#3585)
558
- Fetching a child of static.File with a double-slash in the URL (such as
559
"example//foo.html") should now return a 404 instead of a traceback and
561
- downloadPage will now fire a Failure on its returned Deferred instead of
562
indicating success when the connection is prematurely lost (#3645)
563
- static.File will now provide a 404 instead of a 500 error when it was
564
constructed with a non-existent file (#3634)
565
- microdom should now serialize namespaces correctly (#3672)
566
- The HTTP Auth support resource wrapper should no longer corrupt requests and
567
cause them to skip a segment in the request path (#3679)
568
- The twisted.web WSGI support should now include leading slashes in PATH_INFO,
569
and SCRIPT_NAME will be empty if the application is at the root of the
570
resource tree. This means that WSGI applications should no longer generate
571
URLs with double-slashes in them even if they naively concatenate the values
573
- WSGI applications should now receive the requesting client's IP in the
574
REMOTE_ADDR environment variable (#3730)
575
- The distrib module should work again. It was unfortunately broken with the
576
refactoring of twisted.web's header support (#3697)
577
- static.File now supports multiple ranges specified in the Range header
579
- static.File should now generate a correct Content-Length value when the
580
requested Range value doesn't fit entirely within the file's contents (#3814)
581
- Attempting to call request.finish() after the connection has been lost will
582
now immediately raise a RuntimeError (#4013)
583
- An HTTP-auth resource should now be able to directly render the wrapped
584
avatar, whereas before it would only allow retrieval of child resources
586
- twisted.web's wsgi support should no longer attempt to call request.finish
587
twice, which would cause errors in certain cases (#4025)
588
- WSGI applications should now be able to handle requests with large bodies
590
- Exceptions raised from WSGI applications should now more reliably be turned
591
into 500 errors on the HTTP level (#4019)
592
- DeferredResource now correctly passes through exceptions raised from the
593
wrapped resource, instead of turning them all into 500 errors (#3932)
594
- Agent.request now generates a Host header when no headers are passed at
597
Deprecations and Removals
598
-------------------------
599
- The unmaintained and untested twisted.web.monitor module was removed (#2763)
600
- The twisted.web.woven package has been removed (#1522)
601
- All of the error resources in twisted.web.error are now in
602
twisted.web.resource, and accessing them through twisted.web.error is now
604
- To facilitate a simplification of the timeout logic in server.Session,
605
various things have been deprecated (#3457)
606
- the loopFactory attribute is now ignored
607
- the checkExpired method now does nothing
608
- the lifetime parameter to startCheckingExpiration is now ignored
609
- The twisted.web.trp module is now deprecated (#2030)
613
- #2763, #3540, #3575, #3610, #3605, #1176, #3539, #3750, #3761, #3779, #2677,
614
#3782, #3904, #3919, #3418, #3990, #1404, #4050
617
Twisted Words 9.0.0 (2009-11-24)
618
================================
622
- IRCClient.describe is a new method meant to replace IRCClient.me to send
623
CTCP ACTION messages with less confusing behavior (#3910)
624
- The XMPP client protocol implementation now supports ANONYMOUS SASL
625
authentication (#4067)
626
- The IRC client protocol implementation now has better support for the
627
ISUPPORT server->client message, storing the data in a new
628
ServerSupportedFeatures object accessible via IRCClient.supported (#3285)
632
- The twisted.words IRC server now always sends an MOTD, which at least makes
633
Pidgin able to successfully connect to a twisted.words IRC server (#2385)
634
- The IRC client will now dispatch "RPL MOTD" messages received before a
635
"RPL MOTD START" instead of raising an exception (#3676)
636
- The IRC client protocol implementation no longer updates its 'nickname'
637
attribute directly; instead, that attribute will be updated when the server
638
acknowledges the change (#3377)
639
- The IRC client protocol implementation now supports falling back to another
640
nickname when a nick change request fails (#3377, #4010)
642
Deprecations and Removals
643
-------------------------
644
- The TOC protocol implementation is now deprecated, since the protocol itself
645
has been deprecated and obselete for quite a long time (#3580)
646
- The gui "im" application has been removed, since it relied on GTK1, which is
647
hard to find these days (#3699, #3340)
651
- #2763, #3540, #3647, #3750, #3895, #3968, #4050
654
Core 8.2.0 (2008-12-16)
655
=======================
659
- Reactors are slowly but surely becoming more isolated, thus improving
661
- FilePath has gained a realpath method, and FilePath.walk no longer infinitely
662
recurses in the case of a symlink causing a self-recursing filesystem tree
664
- FilePath's moveTo and copyTo methods now have an option to disable following
666
- Private APIs are now included in the API documentation (#3268)
667
- hotshot is now the default profiler for the twistd --profile parameter and
668
using cProfile is now documented (#3355, #3356)
669
- Process protocols can now implement a processExited method, which is
670
distinct from processEnded in that it is called immediately when the child
671
has died, instead of waiting for all the file descriptors to be closed
673
- twistd now has a --umask option (#966, #3024)
674
- A new deferToThreadPool function exists in twisted.internet.threads (#2845)
675
- There is now an example of writing an FTP server in examples/ftpserver.py
677
- A new runAsEffectiveUser function has been added to twisted.python.util
679
- twisted.internet.utils.getProcessOutput now offers a mechanism for
680
waiting for the process to actually end, in the event of data received on
682
- A fullyQualifiedName function has been added to twisted.python.reflect
684
- strports now defaults to managing access to a UNIX socket with a lock;
685
lockfile=0 can be included in the strports specifier to disable this
687
- FTPClient now has a 'rename' method (#3335)
688
- FTPClient now has a 'makeDirectory' method (#3500)
689
- FTPClient now has a 'removeFile' method (#3491)
690
- flushWarnings, A new Trial method for testing warnings, has been added
691
(#3487, #3427, #3506)
692
- The log observer can now be configured in .tac files (#3534)
696
- TLS Session Tickets are now disabled by default, allowing connections to
697
certain servers which hang when an empty session ticket is received (like
699
- twisted.enterprise.adbapi.ConnectionPool's noisy attribute now defaults to
700
False, as documented (#1806)
701
- Error handling and logging in adbapi is now much improved (#3244)
702
- TCP listeners can now be restarted (#2913)
703
- Doctests can now be rerun with trial's --until-failure option (#2713)
704
- Some memory leaks have been fixed in trial's --until-failure
705
implementation (#3119, #3269)
706
- Trial's summary reporter now prints correct runtime information and handles
707
the case of 0 tests (#3184)
708
- Trial and any other user of the 'namedAny' function now has better error
709
reporting in the case of invalid module names (#3259)
710
- Multiple instances of trial can now run in parallel in the same directory
711
by creating _trial_temp directories with an incremental suffix (#2338)
712
- Trial's failUnlessWarns method now works on Python 2.6 (#3223)
713
- twisted.python.log now hooks into the warnings system in a way compatible
714
with Python 2.6 (#3211)
715
- The GTK2 reactor is now better supported on Windows, but still not passing
716
the entire test suite (#3203)
717
- low-level failure handling in spawnProcess has been improved and no longer
718
leaks file descriptors (#2305, #1410)
719
- Perspective Broker avatars now have their logout functions called in more
721
- Log observers which raise exceptions are no longer removed (#1069)
722
- transport.getPeer now always includes an IP address in the Address returned
723
instead of a hostname (#3059)
724
- Functions in twisted.internet.utils which spawn processes now avoid calling
725
chdir in the case where no working directory is passed, to avoid some
726
obscure permission errors (#3159)
727
- twisted.spread.publish.Publishable no longer corrupts line endings on
729
- SelectReactor now properly detects when a TLS/TCP connection has been
731
- twisted.python.lockfile no longer raises an EEXIST OSError and is much
732
better supported on Windows (#3367)
733
- When ITLSTransport.startTLS is called while there is data in the write
734
buffer, TLS negotiation will now be delayed instead of the method raising
736
- The userAnonymous argument to FTPFactory is now honored (#3390)
737
- twisted.python.modules no longer tries to "fix" sys.modules after an import
738
error, which was just causing problems (#3388)
739
- setup.py no longer attempts to build extension modules when run with Jython
741
- AMP boxes can now be sent in IBoxReceiver.startReceivingBoxes (#3477)
742
- AMP connections are closed as soon as a key length larger than 255 is
744
- Log events with timezone offsets between -1 and -59 minutes are now
745
correctly reported as negative (#3515)
747
Deprecations and Removals
748
-------------------------
749
- Trial's setUpClass and tearDownClass methods are now deprecated (#2903)
750
- problemsFromTransport has been removed in favor of the argument passed to
751
connectionLost (#2874)
752
- The mode parameter to methods of IReactorUNIX and IReactorUNIXDatagram are
753
deprecated in favor of applications taking other security precautions, since
754
the mode of a Unix socket is often not respected (#1068)
755
- Index access on instances of twisted.internet.defer.FirstError has been
756
removed in favor of the subFailure attribute (#3298)
757
- The 'changeDirectory' method of FTPClient has been deprecated in favor of
758
the 'cwd' method (#3491)
763
- #3202, #2869, #3225, #2955, #3237, #3196, #2355, #2881, #3054, #2374, #2918,
764
#3210, #3052, #3267, #3288, #2985, #3295, #3297, #2512, #3302, #1222, #2631,
765
#3306, #3116, #3215, #1489, #3319, #3320, #3321, #1255, #2169, #3182, #3323,
766
#3301, #3318, #3029, #3338, #3346, #1144, #3173, #3165, #685, #3357, #2582,
767
#3370, #2438, #1253, #637, #1971, #2208, #979, #1790, #1888, #1882, #1793,
768
#754, #1890, #1931, #1246, #1025, #3177, #2496, #2567, #3400, #2213, #2027,
769
#3415, #1262, #3422, #2500, #3414, #3045, #3111, #2974, #2947, #3222, #2878,
770
#3402, #2909, #3423, #1328, #1852, #3382, #3393, #2029, #3489, #1853, #2026,
771
#2375, #3502, #3482, #3504, #3505, #3507, #2605, #3519, #3520, #3121, #3484,
772
#3439, #3216, #3511, #3524, #3521, #3197, #2486, #2449, #2748, #3381, #3236,
776
Conch 8.2.0 (2008-12-16)
777
========================
781
- The type of the protocols instantiated by SSHFactory is now parameterized
786
- A file descriptor leak has been fixed (#3213, #1789)
787
- "File Already Exists" errors are now handled more correctly (#3033)
788
- Handling of CR IAC in TelnetClient is now improved (#3305)
789
- SSHAgent is no longer completely unusable (#3332)
790
- The performance of insults.ClientProtocol is now greatly increased by
791
delivering more than one byte at a time to application code (#3386)
792
- Manhole and the conch server no longer need to be run as root when not
794
- The value of FILEXFER_ATTR_ACMODTIME has been corrected (#2902)
795
- The management of known_hosts and host key verification has been overhauled
796
(#1376, #1301, #3494, #3496, #1292, #3499)
803
Lore 8.2.0 (2008-12-16)
804
=======================
811
Mail 8.2.0 (2008-12-16)
812
=======================
816
- The mailmail tool now provides better error messages for usage errors (#3339)
817
- The SMTP protocol implementation now works on PyPy (#2976)
824
Names 8.2.0 (2008-12-16)
825
========================
829
- The NAPTR record type is now supported (#2276)
833
- Make client.Resolver less vulnerable to the Birthday Paradox attack by
834
avoiding sending duplicate queries when it's not necessary (#3347)
835
- client.Resolver now uses a random source port for each DNS request (#3342)
836
- client.Resolver now uses a full 16 bits of randomness for message IDs,
837
instead of 10 which it previously used (#3342)
838
- All record types now have value-based equality and a string representation
846
Web 8.2.0 (2008-12-16)
847
======================
851
- The web server can now deal with multi-value headers in the new attributes of
852
Request, requestHeaders and responseHeaders (#165)
853
- There is now a resource-wrapper which implements HTTP Basic and Digest auth
854
in terms of twisted.cred (#696)
855
- It's now possible to limit the number of redirects that client.getPage will
857
- The directory-listing code no longer uses Woven (#3257)
858
- static.File now supports Range headers with a single range (#1493)
859
- twisted.web now has a rudimentary WSGI container (#2753)
860
- The web server now supports chunked encoding in requests (#3385)
864
- The xmlrpc client now raises an error when the server sends an empty
866
- HTTPPageGetter no longer duplicates default headers when they're explicitly
867
overridden in the headers parameter (#1382)
868
- The server will no longer timeout clients which are still sending request
870
- microdom's isEqualToNode now returns False when the nodes aren't equal
873
Deprecations and Removals
874
-------------------------
876
- Request.headers and Request.received_headers are not quite deprecated, but
877
they are discouraged in favor of requestHeaders and responseHeaders (#165)
881
- #909, #687, #2938, #1152, #2930, #2025, #2683, #3471
884
Web2 8.2.0 (2008-12-16)
885
=======================
887
Note: Twisted Web2 is being phased out in preference for Twisted Web, but some
888
maintenance changes have been made.
892
- The main twisted.web2 docstring now indicates the current state of the
894
- Headers which require unusual bytes are now quoted (#2346)
895
- Some links in the introduction documentation have been fixed (#2552)
898
Words 8.2.0 (2008-12-16)
899
========================
903
- There is now a standalone XMPP router included in twisted.words: it can be
904
used with the 'twistd xmpp-router' command line (#3407)
905
- A server factory for Jabber XML Streams has been added (#3435)
906
- Domish now allows for iterating child elements with specific qualified names
908
- IRCClient now has a 'back' method which removes the away status (#3366)
909
- IRCClient now has a 'whois' method (#3133)
913
- The IRC Client implementation can now deal with compound mode changes (#3230)
914
- The MSN protocol implementation no longer requires the CVR0 protocol to
915
be included in the VER command (#3394)
916
- In the IRC server implementation, topic messages will no longer be sent for
917
a group which has no topic (#2204)
918
- An infinite loop (which caused infinite memory usage) in irc.split has been
919
fixed. This was triggered any time a message that starts with a delimiter
921
- Jabber's toResponse now generates a valid stanza even when stanzaType is not
923
- The lifetime of authenticator instances in XmlStreamServerFactory is no
924
longer artificially extended (#3464)
931
Core 8.1.0 (2008-05-18)
932
=======================
937
- twisted.internet.error.ConnectionClosed is a new exception which is the
938
superclass of ConnectionLost and ConnectionDone (#3137)
939
- Trial's CPU and memory performance should be better now (#3034)
940
- twisted.python.filepath.FilePath now has a chmod method (#3124)
945
- Some reactor re-entrancy regressions were fixed (#3146, #3168)
946
- A regression was fixed whereby constructing a Failure for an exception and
947
traceback raised out of a Pyrex extension would fail (#3132)
948
- CopyableFailures in PB can again be created from CopiedFailures (#3174)
949
- FilePath.remove, when called on a FilePath representing a symlink to a
950
directory, no longer removes the contents of the targeted directory, and
951
instead removes the symlink (#3097)
952
- FilePath now has a linkTo method for creating new symlinks (#3122)
953
- The docstring for Trial's addCleanup method now correctly specifies when
954
cleanup functions are run (#3131)
955
- assertWarns now deals better with multiple identical warnings (#2904)
956
- Various windows installer bugs were fixed (#3115, #3144, #3150, #3151, #3164)
957
- API links in the howto documentation have been corrected (#3130)
958
- The Win32 Process transport object now has a pid attribute (#1836)
959
- A doc bug in the twistd plugin howto which would inevitably lead to
960
confusion was fixed (#3183)
961
- A regression breaking IOCP introduced after the last release was fixed
964
Deprecations and Removals
965
-------------------------
967
- mktap is now fully deprecated, and will emit DeprecationWarnings when used
972
- #3079, #3118, #3120, #3145, #3069, #3149, #3186, #3208, #2762
975
Conch 8.1.0 (2008-05-18)
976
========================
980
- A regression was fixed whereby the publicKeys and privateKeys attributes of
981
SSHFactory would not be interpreted as strings (#3141)
982
- The sshsimpleserver.py example had a minor bug fix (#3135)
983
- The deprecated mktap API is no longer used (#3127)
984
- An infelicity was fixed whereby a NameError would be raised in certain
985
circumstances during authentication when a ConchError should have been
987
- A workaround was added to conch.insults for a bug in gnome-terminal whereby
988
it would not scroll correctly (#3189)
991
Lore 8.1.0 (2008-05-18)
992
=======================
996
- The deprecated mktap API is no longer used (#3127)
999
News 8.1.0 (2008-05-18)
1000
=======================
1004
- The deprecated mktap API is no longer used (#3127)
1007
Web 8.1.0 (2008-05-18)
1008
======================
1012
- Fixed an XMLRPC bug whereby sometimes a callRemote Deferred would
1013
accidentally be fired twice when a connection was lost during the handling of
1015
- Fixed a bug in the "Using Twisted Web" document which prevented an example
1016
resource from being renderable (#3147)
1017
- The deprecated mktap API is no longer used (#3127)
1020
Words 8.1.0 (2008-05-18)
1021
========================
1025
- JID objects now have a nice __repr__ (#3156)
1026
- Extending XMPP protocols is now easier (#2178)
1030
- The deprecated mktap API is no longer used (#3127)
1031
- A bug whereby one-time XMPP observers would be enabled permanently was fixed
1035
Mail 8.1.0 (2008-05-18)
1036
=======================
1040
- The deprecated mktap API is no longer used (#3127)
1043
Names 8.1.0 (2008-05-18)
1044
========================
1048
- The deprecated mktap API is no longer used (#3127)
1051
Web2 8.1.0 (2008-05-18)
1052
=======================
1056
- The deprecated mktap API is no longer used (#3127)
1059
Core 8.0.1 (2008-03-26)
1060
=======================
1064
- README no longer refers to obsolete trial command line option
1065
- twistd no longer causes a bizarre DeprecationWarning about mktap
1068
Core 8.0.0 (2008-03-17)
1069
=======================
1074
- The IOCP reactor has had many changes and is now greatly improved
1076
- The main Twisted distribution is now easy_installable (#1286, #3110)
1077
- twistd can now profile with cProfile (#2469)
1078
- twisted.internet.defer contains a DeferredFilesystemLock which gives a
1079
Deferred interface to lock file acquisition (#2180)
1080
- twisted.python.modules is a new system for representing and manipulating
1081
module paths (i.e. sys.path) (#1951)
1082
- twisted.internet.fdesc now contains a writeToFD function, along with other
1084
- twisted.python.usage now allows optional type enforcement (#739)
1085
- The reactor now has a blockingCallFromThread method for non-reactor threads
1086
to use to wait for a reactor-scheduled call to return a result (#1042, #3030)
1087
- Exceptions raised inside of inlineCallbacks-using functions now have a
1088
better chance of coming with a meaningful traceback (#2639, #2803)
1089
- twisted.python.randbytes now contains code for generating secure random
1091
- The classes in twisted.application.internet now accept a reactor parameter
1092
for specifying the reactor to use for underlying calls to allow for better
1094
- LoopingCall now allows you to specify the reactor to use to schedule new
1095
calls, allowing much better testing techniques (#2633, #2634)
1096
- twisted.internet.task.deferLater is a new API for scheduling calls and
1097
getting deferreds which are fired with their results (#1875)
1098
- objgrep now knows how to search through deque objects (#2323)
1099
- twisted.python.log now contains a Twisted log observer which can forward
1100
messages to the Python logging system (#1351)
1101
- Log files now include seconds in the timestamps (#867)
1102
- It is now possible to limit the number of log files to create during log
1104
- The interface required by the log context system is now documented as
1105
ILoggingContext, and abstract.FileDescriptor now declares that it implements
1107
- There is now an example cred checker that uses a database via adbapi (#460)
1108
- The epoll reactor is now documented in the choosing-reactors howto (#2539)
1109
- There were improvements to the client howto (#222)
1110
- Int8Receiver was added (#2315)
1111
- Various refactorings to AMP introduced better testability and public
1112
interfaces (#2657, #2667, #2656, #2664, #2810)
1113
- twisted.protocol.policies.TrafficLoggingFactory now has a resetCounter
1115
- The FTP client can be told which port range within which to bind passive
1116
transfer ports (#1904)
1117
- twisted.protocols.memcache contains a new asynchronous memcache client
1119
- PB now supports anonymous login (#439, #2312)
1120
- twisted.spread.jelly now supports decimal objects (#2920)
1121
- twisted.spread.jelly now supports all forms of sets (#2958)
1122
- There is now an interface describing the API that process protocols must
1124
- Trial reporting to core unittest TestResult objects has been improved (#2495)
1125
- Trial's TestCase now has an addCleanup method which allows easy setup of
1126
tear-down code (#2610, #2899)
1127
- Trial's TestCase now has an assertIsInstance method (#2749)
1128
- Trial's memory footprint and speed are greatly improved (#2275)
1129
- At the end of trial runs, "PASSED" and "FAILED" messages are now colorized
1131
- Tests which leave global state around in the reactor will now fail in
1132
trial. A new option, --unclean-warnings, will convert these errors back into
1134
- Trial now has a --without-module command line for testing code in an
1135
environment that lacks a particular Python module (#1795)
1136
- Error reporting of failed assertEquals assertions now has much nicer
1138
- Trial now has methods for monkey-patching (#2598)
1139
- Trial now has an ITestCase (#2898, #1950)
1140
- The trial reporter API now has a 'done' method which is called at the end of
1142
- TestCase now has an assertWarns method which allows testing that functions
1143
emit warnings (#2626, #2703)
1144
- There are now no string exceptions in the entire Twisted code base (#2063)
1145
- There is now a system for specifying credentials checkers with a string
1151
- Some tests which were asserting the value of stderr have been changed
1152
because Python uncontrollably writes bytes to stderr (#2405)
1153
- Log files handle time zones with DST better (#2404)
1154
- Subprocesses using PTYs on OS X that are handled by Twisted will now be able
1155
to more reliably write the final bytes before they exit, allowing Twisted
1156
code to more reliably receive them (#2371, #2858)
1157
- Trial unit test reporting has been improved (#1901)
1158
- The kqueue reactor handles connection failures better (#2172)
1159
- It's now possible to run "trial foo/bar/" without an exception: trailing
1160
slashes no longer cause problems (#2005)
1161
- cred portals now better deal with implementations of inherited interfaces
1163
- FTP error handling has been improved (#1160, 1107)
1164
- Trial behaves better with respect to file locking on Windows (#2482)
1165
- The FTP server now gives a better error when STOR is attempted during an
1166
anonymous session (#1575)
1167
- Trial now behaves better with tests that use the reactor's threadpool (#1832)
1168
- twisted.python.reload now behaves better with new-style objects (#2297)
1169
- LogFile's defaultMode parameter is now better implemented, preventing
1170
potential security exploits (#2586)
1171
- A minor obscure leak in thread pools was corrected (#1134)
1172
- twisted.internet.task.Clock now returns the correct DelayedCall from
1173
callLater, instead of returning the one scheduled for the furthest in the
1175
- twisted.spread.util.FilePager no longer unnecessarily buffers data in
1176
memory (#1843, 2321)
1177
- Asking for twistd or trial to use an unavailable reactor no longer prints a
1179
- System event triggers have fewer obscure bugs (#2509)
1180
- Plugin discovery code is much better behaved, allowing multiple
1181
installations of a package with plugins (#2339, #2769)
1182
- Process and PTYProcess have been merged and some minor bugs have been fixed
1184
- The reactor has less global state (#2545)
1185
- Failure can now correctly represent and format errors caused by string
1187
- The epoll reactor now has better error handling which now avoids the bug
1188
causing 100% CPU usage in some cases (#2809)
1189
- Errors raised during trial setUp or tearDown methods are now handled better
1191
- A problem when deferred callbacks add new callbacks to the deferred that
1192
they are a callback of was fixed (#2849)
1193
- Log messages that are emitted during connectionMade now have the protocol
1194
prefix correctly set (#2813)
1195
- The string representation of a TCP Server connection now contains the actual
1196
port that it's bound to when it was configured to listen on port 0 (#2826)
1197
- There is better reporting of error codes for TCP failures on Windows (#2425)
1198
- Process spawning has been made slightly more robust by disabling garbage
1199
collection temporarily immediately after forking so that finalizers cannot
1200
be executed in an unexpected environment (#2483)
1201
- namedAny now detects import errors better (#698)
1202
- Many fixes and improvements to the twisted.python.zipstream module have
1204
- FilePager no longer blows up on empty files (#3023)
1205
- twisted.python.util.FancyEqMixin has been improved to cooperate with objects
1206
of other types (#2944)
1207
- twisted.python.FilePath.exists now restats to prevent incorrect result
1209
- twisted.python.util.mergeFunctionMetadata now also merges the __module__
1211
- It is now possible to call transport.pauseProducing within connectionMade on
1212
TCP transports without it being ignored (#1780)
1213
- twisted.python.versions now understands new SVN metadata format for fetching
1214
the SVN revision number (#3058)
1215
- It's now possible to use reactor.callWhenRunning(reactor.stop) on gtk2 and
1216
glib2 reactors (#3011)
1218
Deprecations and removals
1219
-------------------------
1220
- twisted.python.timeoutqueue is now deprecated (#2536)
1221
- twisted.enterprise.row and twisted.enterprise.reflector are now deprecated
1223
- twisted.enterprise.util is now deprecated (#3022)
1224
- The dispatch and dispatchWithCallback methods of ThreadPool are now
1226
- Starting the same reactor multiple times is now deprecated (#1785)
1227
- The visit method of various test classes in trial has been deprecated (#2897)
1228
- The --report-profile option to twistd and twisted.python.dxprofile are
1230
- The upDownError method of Trial reporters is deprecated (#2883)
1235
- #2396, #2211, #1921, #2378, #2247, #1603, #2463, #2530, #2426, #2356, #2574,
1236
- #1844, #2575, #2655, #2640, #2670, #2688, #2543, #2743, #2744, #2745, #2746,
1237
- #2742, #2741, #1730, #2831, #2216, #1192, #2848, #2767, #1220, #2727, #2643,
1238
- #2669, #2866, #2867, #1879, #2766, #2855, #2547, #2857, #2862, #1264, #2735,
1239
- #942, #2885, #2739, #2901, #2928, #2954, #2906, #2925, #2942, #2894, #2793,
1240
- #2761, #2977, #2968, #2895, #3000, #2990, #2919, #2969, #2921, #3005, #421,
1241
- #3031, #2940, #1181, #2783, #1049, #3053, #2847, #2941, #2876, #2886, #3086,
1245
Conch 8.0.0 (2008-03-17)
1246
========================
1250
- Add DEC private mode manipulation methods to ITerminalTransport. (#2403)
1254
- Parameterize the scheduler function used by the insults TopWindow widget.
1255
This change breaks backwards compatibility in the TopWindow initializer.
1257
- Notify subsystems, like SFTP, of connection close. (#2421)
1258
- Change the process file descriptor "connection lost" code to reverse the
1259
setNonBlocking operation done during initialization. (#2371)
1260
- Change ConsoleManhole to wait for connectionLost notification before
1261
stopping the reactor. (#2123, #2371)
1262
- Make SSHUserAuthServer.ssh_USERAUTH_REQUEST return a Deferred. (#2528)
1263
- Manhole's initializer calls its parent class's initializer with its
1264
namespace argument. (#2587)
1265
- Handle ^C during input line continuation in manhole by updating the prompt
1266
and line buffer correctly. (#2663)
1267
- Make twisted.conch.telnet.Telnet by default reject all attempts to enable
1269
- Reduce the number of calls into application code to deliver application-level
1270
data in twisted.conch.telnet.Telnet.dataReceived (#2107)
1271
- Fix definition and management of extended attributes in conch file transfer.
1273
- Fix parsing of OpenSSH-generated RSA keys with differing ASN.1 packing style.
1275
- Fix handling of missing $HOME in twisted.conch.client.unix. (#3061)
1279
- #2267, #2378, #2604, #2707, #2341, #2685, #2679, #2912, #2977, #2678, #2709
1283
Lore 8.0.0 (2008-03-17)
1284
=======================
1288
- Change twisted.lore.tree.setIndexLin so that it removes node with index-link
1289
class when the specified index filename is None. (#812)
1290
- Fix the conversion of the list of options in man pages to Lore format.
1292
- Fix conch man pages generation. (#3075)
1293
- Fix management of the interactive command tag in man2lore. (#3076)
1300
News 8.0.0 (2008-03-17)
1301
=======================
1305
- Remove all "API Stability" markers (#2847)
1308
Runner 8.0.0 (2008-03-17)
1309
=========================
1313
- Remove all "API Stability" markers (#2847)
1316
Web 8.0.0 (2008-03-17)
1317
======================
1321
- Add support to twisted.web.client.getPage for the HTTP HEAD method. (#2750)
1325
- Set content-type in xmlrpc responses to "text/xml" (#2430)
1326
- Add more error checking in the xmlrpc.XMLRPC render method, and enforce
1327
POST requests. (#2505)
1328
- Reject unicode input to twisted.web.client._parse to reject invalid
1329
unicode URLs early. (#2628)
1330
- Correctly re-quote URL path segments when generating an URL string to
1331
return from Request.prePathURL. (#2934)
1332
- Make twisted.web.proxy.ProxyClientFactory close the connection when
1333
reporting a 501 error. (#1089)
1334
- Fix twisted.web.proxy.ReverseProxyResource to specify the port in the
1335
host header if different from 80. (#1117)
1336
- Change twisted.web.proxy.ReverseProxyResource so that it correctly encodes
1337
the request URI it sends on to the server for which it is a proxy. (#3013)
1338
- Make "twistd web --personal" use PBServerFactory (#2681)
1342
- #1996, #2382, #2211, #2633, #2634, #2640, #2752, #238, #2905
1345
Words 8.0.0 (2008-03-17)
1346
========================
1350
- Provide function for creating XMPP response stanzas. (#2614, #2614)
1351
- Log exceptions raised in Xish observers. (#2616)
1352
- Add 'and' and 'or' operators for Xish XPath expressions. (#2502)
1353
- Make JIDs hashable. (#2770)
1357
- Respect the hostname and servername parameters to IRCClient.register. (#1649)
1358
- Make EventDispatcher remove empty callback lists. (#1652)
1359
- Use legacy base64 API to support Python 2.3 (#2461)
1360
- Fix support of DIGEST-MD5 challenge parsing with multi-valued directives.
1362
- Fix reuse of dict of prefixes in domish.Element.toXml (#2609)
1363
- Properly process XMPP stream headers (#2615)
1364
- Use proper namespace for XMPP stream errors. (#2630)
1365
- Properly parse XMPP stream errors. (#2771)
1366
- Fix toResponse for XMPP stanzas without an id attribute. (#2773)
1367
- Move XMPP stream header procesing to authenticators. (#2772)
1371
- #2617, #2640, #2741, #2063, #2570, #2847
1374
Mail 8.0.0 (2008-03-17)
1375
=======================
1379
- Support CAPABILITY responses that include atoms of the form "FOO" and
1380
"FOO=BAR" in IMAP4 (#2695)
1381
- Parameterize error handling behavior of imap4.encoder and imap4.decoder.
1386
- Handle empty passwords in SMTP auth. (#2521)
1387
- Fix IMAP4Client's parsing of literals which are not preceeded by whitespace.
1389
- Handle MX lookup suceeding without answers. (#2807)
1390
- Fix issues with aliases(5) process support. (#2729)
1394
- #2371, #2123, #2378, #739, #2640, #2746, #1917, #2266, #2864, #2832, #2063,
1398
Names 8.0.0 (2008-03-17)
1399
========================
1404
- Refactor DNSDatagramProtocol and DNSProtocol to use same base class (#2414)
1405
- Change Resolver to query specified nameservers in specified order, instead
1406
of reverse order. (#2290)
1407
- Make SRVConnector work with bad results and NXDOMAIN responses.
1409
- Handle write errors happening in dns queries, to have correct deferred
1411
- Fix the value of OP_NOTIFY and add a definition for OP_UPDATE. (#2945)
1415
- #2685, #2936, #2581, #2847