summaryrefslogtreecommitdiff
path: root/django/core/servers/basehttp.py
AgeCommit message (Collapse)Author
2020-12-14Fixed #32240 -- Made runserver suppress ↵Petter Strandmark
ConnectionAbortedError/ConnectionResetError errors. See https://bugs.python.org/issue27682 and https://github.com/python/cpython/pull/9713
2019-07-10Fixed #30619 -- Made runserver --nothreading use single threaded WSGIServer.atsuo ishimoto
Browsers often use multiple connections with Connection: keep-alive. If --nothreading is specified, the WSGI server cannot accept new connections until the old connection is closed, causing hangs. Force Connection: close when --nothreading option is used.
2019-01-28Fixed #30137 -- Replaced OSError aliases with the canonical OSError.Jon Dufresne
Used more specific errors (e.g. FileExistsError) as appropriate.
2018-12-20Refs #30015 -- Added 2.1.5 release note and removed 'we' in comments.Carlton Gibson
2018-12-19Fixed #30015 -- Ensured request body is properly consumed for keep-alive ↵Konstantin Alekseev
connections.
2018-11-10Fixed keep-alive support in manage.py runserver.Florian Apolloner
Ticket #25619 changed the default protocol to HTTP/1.1 but did not properly implement keep-alive. As a "fix" keep-alive was disabled in ticket #28440 to prevent clients from hanging (they expect the server to send more data if the connection is not closed and there is no content length set). The combination of those two fixes resulted in yet another problem: HTTP/1.1 by default allows a client to assume that keep-alive is supported unless the server disables it via 'Connection: close' -- see RFC2616 8.1.2.1 for details on persistent connection negotiation. Now if the client receives a response from Django without 'Connection: close' and immediately sends a new request (on the same tcp connection) before our server closes the tcp connection, it will error out at some point because the connection does get closed a few milli seconds later. This patch fixes the mentioned issues by always sending 'Connection: close' if we cannot determine a content length. The code is inefficient in the sense that it does not allow for persistent connections when chunked responses are used, but that should not really cause any problems (Django does not generate those) and it only affects the development server anyways. Refs #25619, #28440.
2017-12-06Fixed #28893 -- Removed unnecessary dict.items() calls.Tim Graham
2017-09-12Fixed #28440 -- Fixed WSGIServer hang on responses without a Content-Length.Tom
Disabled keep-alive to fix the regression in e6065c7b8363202c5eb13ba10c97a8c24d014b45.
2017-02-23Fixed #25619 -- Made runserver serve with HTTP 1.1 protocolClaude Paroz
Thanks Tim Graham for the review.
2017-02-21Refs #27656 -- Updated django.core docstring verbs according to PEP 257.Anton Samarchyan
2017-02-11Removed WSGIServer.server_bind() identical to parent versionClaude Paroz
The method customization was removed in 2ca00faa9137.
2017-02-09Fixed #20238 -- Added threading support to LiveServerTestCase.Nadège Michel
2017-02-01Refs #23919 -- Replaced kwargs.pop() with keyword-only arguments.Vytis Banaitis
2017-01-25Refs #23919 -- Replaced super(ClassName, self) with super().chillaranand
2017-01-22Refs #23919 -- Replaced six.reraise by raiseClaude Paroz
2017-01-21Refs #23919 -- Removed misc references to Python 2.Tim Graham
2017-01-20Refs #23919 -- Removed unneeded str() callsClaude Paroz
2017-01-19Refs #23919 -- Removed str() conversion of type and method __name__.Simon Charette
2017-01-19Refs #23919 -- Stopped inheriting from object to define new style classes.Simon Charette
2017-01-18Refs #23919 -- Removed most of remaining six usageClaude Paroz
Thanks Tim Graham for the review.
2017-01-18Refs #23919 -- Removed encoding preambles and future importsClaude Paroz
2017-01-09Fixed #27705 -- Added protocol/server_cls attributes to runserver for ↵David Sanders
extensibility.
2016-08-23Fixed #26971 -- Prevented crash with non-UTF-8 incoming PATH_INFOClaude Paroz
Thanks Tim Graham and Loïc Bistuer for the reviews.
2016-01-11Fixed #25684 -- Made runserver use logging for request/response output.Flavio Curella
Thanks andreif for the contributing to the patch.
2015-12-31Fixed #26011 -- Prevented random LiveServerTestCase test failures on Windows.Marten Kenbeek
Prevented LiveServerTestCase from stealing ports used by concurrent processes on Windows.
2015-08-01Fixed #25204 -- Added missing space in runserver logging.Tim Graham
2015-02-19Fixed typo in django.core.servers.basehttp message.Alex Vidal
2015-02-05Removed old import aliases.Tim Graham
2015-01-17Removed FastCGI support per deprecation timeline; refs #20766.Tim Graham
2015-01-13Stripped headers containing underscores to prevent spoofing in WSGI environ.Carl Meyer
This is a security fix. Disclosure following shortly. Thanks to Jedediah Smith for the report.
2015-01-02Fixed #24069 -- Made ServerHandler a new style class to fix super() call.Andreas Pelme
2014-11-28Fixed #4444 - Made runserver suppress 'broken pipe' errorsMatthew Somerville
One handler in WSGIServer, to catch the error when raised from SocketServer.BaseServer's finish_request, and one in WSGIRequestHandler (by creating a subclass of ServerHandler), to catch the error when raised in wsgiref.handlers.BaseHandler's finish_response.
2014-10-16Fixed #19508 -- Implemented uri_to_iri as per RFC.Anubhav Joshi
Thanks Loic Bistuer for helping in shaping the patch and Claude Paroz for the review.
2014-09-09Fixed #23398 -- Added helpful error message when runserver is accessed via HTTPSFlavio Curella
2014-06-05Fixed #21773 -- made daemon threads default in the development server.Moayad Mardini
Thanks clime for the report.
2014-03-30Moved ServerHandler helper class to tests.Ramiro Morales
It has been only used in the builtin_servers tests since Django 1.4.
2014-02-08Fixed #21674 -- Deprecated the import_by_path() function in favor of ↵Berker Peksag
import_string(). Thanks Aymeric Augustin for the suggestion and review.
2013-11-09Fixed #14800 -- Suppressed WSGIRequestHandler message filteringClaude Paroz
Filtering out static file requests in runserver has been judged arbitrary and can hide some debugging-related activity. Thanks Roy Smith for the report and Aymeric Augustin for the review.
2013-11-02Fixed #21302 -- Fixed unused imports and import *.Tim Graham
2013-09-22Fixed "Address already in use" from liveserver.Florian Apolloner
Our WSGIServer rewrapped the socket errors from server_bind into WSGIServerExceptions, which is used later on to provide nicer error messages in runserver and used by the liveserver to see if the port is already in use. But wrapping server_bind isn't enough since it only binds to the socket, socket.listen (which is called from server_activate) could also raise "Address already in use". Instead of overriding server_activate too I chose to just catch socket errors, which seems to make more sense anyways and should be more robust against changes in wsgiref.
2013-09-05Took advantage of django.utils.six.moves.urllib.*.Aymeric Augustin
2013-04-28Fixed #18336 -- Doubled request_queue_size.Aymeric Augustin
This reduces random failures to load static files with Google Chrome.
2013-03-20Fixed #18972 -- Refactored bundled wsgi server's chunking algorithm.Matthew Wood
Thanks to amosonn at yahoo.com for the report, @doda for the initial patch and @datagrok for the revamped logic and test case.
2013-03-19Fixed #18003 -- Preserved tracebacks when re-raising errors.konarkmodi
Thanks jrothenbuhler for draft patch, Konark Modi for updates.
2013-02-04Fixed #17061 -- Factored out importing object from a dotted pathClaude Paroz
Thanks Carl Meyer for the report.
2012-12-31Fixed #16241 -- Ensured the WSGI iterable's close() is always called.Aymeric Augustin
Thanks Graham Dumpleton for the report.
2012-11-03Prevented host resolution when running dev serverClaude Paroz
Refs #19075, #2494. Thanks Karen Tracey for spotting the issue.
2012-10-20Removed custom WSGIRequestHandler.get_environClaude Paroz
We probably historically customized it for good reasons, but currently, the differences with upstream Python are not significant any longer. Also fixes #19075 for which a test has been added.
2012-08-16[py3] Fixed a regression introduced in fcc8de0598.Aymeric Augustin
Thanks George Marshall for the report.
2012-08-16[py3] Ported django.core.servers.Aymeric Augustin