What’s new in Tornado 6.5.9¶
Sep 14, 2026¶
Security fixes¶
StaticFileHandlerno longer follows symlinks outside of the static root directory. Applications that wish to continue the previous behavior may set the new argumentallowed_symlink_directoryto the directory (an ancestor of the static root) that should be used for symlink validation. Thanks to Yasha-ops and iaohkut-from-NightWolf-Team for reporting this issue.curl_httpclienthas a newmax_body_sizeargument (default 100MB, same as forsimple_httpclient). This limit is enforced on all requests, whether or notstreaming_callbackis used.curl_httpclientnow also controls its memory usage when decompressing response bodies. Thanks to afldl, iaohkut-from-NightWolf-Team, and aoto-tech for reporting this issue.simple_httpclientnow correctly applies themax_body_sizelimit to responses using HTTP/1.0 format (noContent-LengthorTransfer-Encoding). Previously it silently truncated such responses atmax_buffer_sizeinstead. Thanks to afldl for reporting this issue.simple_httpclientnow rejects responses that use more than 10100 Continueresponses, which could previously cause stack overflow errors. Thanks to afldl for reporting this issue.The limit
ParseBodyConfig.urlencoded.max_argumentis now applied to URL arguments in addition toPOSTbodies. Thanks to iaohkut-from-NightWolf-Team, afldl, and manus-pi for reporting this issue.
Bug fixes¶
tornado.iostream¶
.IOStream.read_until_closenow reports errors correctly when a stream is closed due to an error or exceeds a memory limit. Previously it would report a successful read of whatever was in the buffer. Connection resets are still treated as a normal close (as they are elsewhere inIOStream), since some platforms report a clean shutdown by the peer this way.