summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_python_wsgi.c (follow)
AgeCommit message (Collapse)AuthorFilesLines
2019-02-28Made QUERY_STRING mandatory.Valentin Bartenev1-5/+1
According to CGI/1.1 RFC 3875: The server MUST set this variable; if the Script-URI does not include a query component, the QUERY_STRING MUST be defined as an empty string (""). Python's PEP 333(3) allows omitting it in WSGI interface; PHP docs force no requirements; PSGI and Rack specifications require it even if empty. When nginx proxies requests over FastCGI, it always provides QUERY_STRING. and some PHP apps have been observed to fail if it is missing (see issue #201 on GitHub). A drawback of this change (besides a small overhead) is that there will be no easy way to tell a missing query string from an empty one (i.e. requests with or without the "?" character); yet, it's negligible compared to the possible benefits of wider application compatibility. This closes #226 issue on GitHub.
2019-02-28Introducing Java Servlet Container beta.Max Romanov1-0/+1
2019-02-27Fixed processing of SERVER_NAME after 77aad2c142a0.Valentin Bartenev1-21/+8
Previously, the nxt_router_prepare_msg() function expected server host among other headers unmodified. It's not true anymore since normalization of the Host header has been introduced in 77aad2c142a0. The nxt_unit_split_host() function was removed. It didn't work correctly with IPv6 literals. Anyway, after 77aad2c142a0 the port splitting is done in router while Host header processing.
2018-12-20Python: fixed error reporting on initialization of applications.Valentin Bartenev1-11/+10
PyErr_Print() writes traceback to "sys.stderr", which is a file object that can buffer the output. If the process exits immediately, the buffer can be destroyed before flushing to the log. As a result, the user doesn't see the traceback. Now Py_Finalize() is also called in case of any errors during initialization. It finalizes the interpreter and flushes all data.
2018-12-20Python: cleanup of nxt_python_init().Valentin Bartenev1-10/+3
- Removed surplus NULL assignments; - Added missing nxt_slow_path(); - Style cleanup.
2018-12-20Python: fixed a typo in path error message.Artem Konev1-1/+1
2018-12-19Python: replaced PyErr_PrintEx(1) with PyErr_Print().Valentin Bartenev1-4/+4
These function calls are equivalent. No functional changes.
2018-09-20Python: adjusted input.read(size) argument value interpretation.Valentin Bartenev1-3/+5
Previously, passing 0 resulted in reading the whole body and all negative values raised an exception. Now the behaviour is in consistentance with io.RawIOBase.read() interface, and passing 0 returns empty (byte) string, while -1 results in reading the whole body.
2018-08-06Python: decoding unicode strings as Latin1.Max Romanov1-5/+6
According to PEP 3333, header names and values should be decoded as Latin1.
2018-08-06Unit application library.Max Romanov1-275/+397
Library now used in all language modules. Old 'nxt_app_*' code removed. See src/test/nxt_unit_app_test.c for usage sample.
2018-06-25Introduced nxt_length() macro.Valentin Bartenev1-5/+5
2018-05-21Added SERVER_SOFTWARE request meta-variable.Valentin Bartenev1-0/+18
2018-04-25Python: added a missing slash in the path to "pyenv.cfg".Valentin Bartenev1-1/+1
This closes #115 issue on GitHub.
2018-04-24Support for PEP 405 virtual environments.Valentin Bartenev1-8/+50
This closes #96 issue on GitHub.
2018-04-19Python: returning write() callable object from start_response().Alexander Borisov1-1/+47
According to PEP (3)333 the start_respose() function must return a write() callable. This closes #107 issue on GitHub.
2018-04-04Changed version processing for modules.Alexander Borisov1-1/+1
2018-03-15Python: safety checks for request processing context.Valentin Bartenev1-2/+14
An application can store request related functions and mistakenly call them outside of request processing. Previously this resulted in segmentation fault due to unset nxt_python_run_ctx. Now an exception will be raised.
2018-03-15Python: fixed crash if start_response() is called inside iteration.Valentin Bartenev1-4/+4
The start_response() uses nxt_python_run_ctx, but it was unset right after the application call.
2018-03-05Reduced number of critical log levels.Valentin Bartenev1-41/+34
2018-01-19Python: fixed the "wsgi.errors" environment variable name.Valentin Bartenev1-2/+2
This closes issue #76 on GitHub.
2017-12-28Removed duplicate declaration.Igor Sysoev1-1/+1
2017-12-28HTTP keep-alive connections support.Igor Sysoev1-8/+2
2017-12-27Introducing application 'atexit' hook.Max Romanov1-1/+17
Finalizing Python interpreter. This closes #65 issue on GitHub.
2017-11-29Introducing python virtualenv configuration.Max Romanov1-0/+30
New parameter 'home' for python application allows to configure application-specific virtualenv path. This closes #15 issue on GitHub.
2017-11-20Fixing Coverity warnings.Max Romanov1-2/+2
CID 200496 CID 200494 CID 200490 CID 200489 CID 200483 CID 200482 CID 200472 CID 200465
2017-10-18Added the debug option to module compatibility vector.Igor Sysoev1-1/+1
2017-09-06Style fixes.Igor Sysoev1-2/+4
2017-09-01Added SERVER_ADDR parameter for Python and PHP modules.Igor Sysoev1-0/+1
2017-08-31nginext has been renamed to unit.Igor Sysoev1-5/+5
2017-08-31Introduced module compatibility vector.Igor Sysoev1-0/+7
2017-08-17The new module configuration interface.Igor Sysoev1-103/+4
Configuration and building example: ./configure ./configure python ./configure php ./configure go make all or ./configure make nginext ./configure python make python ./configure php make php ./configure go make go Modules configuration options and building examples: ./configure python --module=python2 --config=python2.7-config make python2 ./configure php --module=php7 --config=php7.0-config --lib-path=/usr/local/php7.0 make php7 ./configure go --go=go1.6 --go-path=${HOME}/go1.6 make go1.6
2017-08-11Request body read state implemented.Max Romanov1-29/+40
With specific timeout and buffer size settings.
2017-07-18Python: typo fixed in string processing shortcut.Max Romanov1-2/+2
2017-07-12New process port exchange changed. READY message type introduced.Max Romanov1-71/+44
Application process start request DATA message from router to master. Master notifies router via NEW_PORT message after worker process become ready.
2017-07-07Python initialization moved from master to worker application.Max Romanov1-94/+46
2017-07-05Python WSGI: SERVER_NAME, SERVER_PORT fixed, REMOTE_ADDR introduced.Max Romanov1-59/+87
Shortcut: do not iterate over String (or Bytes) return object. Call 'close()' for return object (if present).
2017-07-05Complex target parser copied from NGINX.Max Romanov1-9/+21
nxt_app_request_header_t fields renamed: - 'path' renamed to 'target'. - 'path_no_query' renamed to 'path' and contains parsed value.
2017-06-23Python app request processing.Max Romanov1-238/+315
2017-03-14Solaris compatibilty.Igor Sysoev1-8/+4
2017-03-14Fixed unit tests building broken by the previous commit.Igor Sysoev1-0/+2
2017-03-09Processes refactoring.Igor Sysoev1-4/+5
The cycle has been renamed to the runtime.
2017-02-01nxt_str_t changes.Igor Sysoev1-28/+28
2017-02-01More refactoring relicts removed.Igor Sysoev1-6/+6
2017-01-17Initial version.Igor Sysoev1-0/+973