Another month, another round of Twisted development. February saw progress on a miscellany of bug fixes, as well as further work on the new SIP implementation. List of tickets I worked on (bold tickets are now closed):
#2036 - trial runs tests from .pyc files even if there is no .py file
#2194 - small bug in SIP Via header generation
#3634 - restat in render in static.File raise Exception if file doesn't exists
#3639 - suppress deprecation warnings emitted by twisted.test.test_sip
#3643 - MemCacheProtocol does not return an error if it is used after disconnecting
#3648 - twisted.cred.credentials.UsernameHashedPassword doesn't hash password strings when checkPassword
#3654 - unlink of unix socket in connectionLost may cause twistd daemons to ignore SIGTERM
#3584 - SIP transport and transaction layer
#3660 - IRCClient reports ":None:None" to CTCP version request
Work on #3654 unearthed a more general problem where twistd fails to exit when a service encounters an exception during shutdown. So hopefully there'll be less need to use kill -9 during development :)
RFC 3261 is the longest RFC for a network protocol the IETF has ever produced. The SIP transport/transaction branch only provides the bottom two layers of a full SIP stack, but introduces 1700 new lines of code. Special thanks to Chris Armstrong and Jean-Paul Calderone for their amazingly detailed review. I managed to get halfway through the issues they raised, and expect to finish it up next time.
Once again, thanks to the Software Freedom Conservancy, all of the Twisted Sponsors, and all the other developers who contribute to Twisted.