From cf2767625fa164b813ef489795e9eebc11536475 Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Thu, 15 Mar 2018 17:10:24 +0300 Subject: [PATCH] Python: fixed crash if start_response() is called inside iteration. The start_response() uses nxt_python_run_ctx, but it was unset right after the application call. --- src/nxt_python_wsgi.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/nxt_python_wsgi.c b/src/nxt_python_wsgi.c index 15947fa0..d2eb5d5b 100644 --- a/src/nxt_python_wsgi.c +++ b/src/nxt_python_wsgi.c @@ -353,19 +353,17 @@ nxt_python_run(nxt_task_t *task, nxt_app_rmsg_t *rmsg, nxt_app_wmsg_t *wmsg) return NXT_ERROR; } - nxt_python_run_ctx = &run_ctx; - PyTuple_SET_ITEM(args, 0, environ); Py_INCREF(nxt_py_start_resp_obj); PyTuple_SET_ITEM(args, 1, nxt_py_start_resp_obj); + nxt_python_run_ctx = &run_ctx; + result = PyObject_CallObject(nxt_py_application, args); Py_DECREF(args); - nxt_python_run_ctx = NULL; - if (nxt_slow_path(result == NULL)) { nxt_log_error(NXT_LOG_ERR, task->log, "Python failed to call the application"); @@ -428,6 +426,7 @@ nxt_python_run(nxt_task_t *task, nxt_app_rmsg_t *rmsg, nxt_app_wmsg_t *wmsg) } Py_DECREF(result); + nxt_python_run_ctx = NULL; return NXT_OK; @@ -446,6 +445,7 @@ fail: } Py_DECREF(result); + nxt_python_run_ctx = NULL; return NXT_ERROR; }