From 009a3f2c0dcba1a5deb5c6f8286d64c5f37b0656 Mon Sep 17 00:00:00 2001 From: Unbit Date: Mon, 28 Oct 2013 07:59:45 +0100 Subject: [PATCH] fixed greenlet memory leaks --- plugins/greenlet/greenlet.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/greenlet/greenlet.c b/plugins/greenlet/greenlet.c index a69e6494..2fd1db9e 100644 --- a/plugins/greenlet/greenlet.c +++ b/plugins/greenlet/greenlet.c @@ -19,18 +19,16 @@ static struct uwsgi_option greenlet_options[] = { struct wsgi_request *uwsgi_greenlet_current_wsgi_req(void) { struct wsgi_request *wsgi_req = NULL; PyObject *current_greenlet = (PyObject *)PyGreenlet_GetCurrent(); - Py_INCREF(current_greenlet); PyObject *py_wsgi_req = PyObject_GetAttrString(current_greenlet, "uwsgi_wsgi_req"); // not in greenlet if (!py_wsgi_req) { uwsgi_log("[BUG] current_wsgi_req NOT FOUND !!!\n"); goto end; } - Py_INCREF(py_wsgi_req); wsgi_req = (struct wsgi_request*) PyLong_AsLong(py_wsgi_req); - //Py_DECREF(py_wsgi_req); + Py_DECREF(py_wsgi_req); end: - //Py_DECREF(current_greenlet); + Py_DECREF(current_greenlet); return wsgi_req; } @@ -44,9 +42,11 @@ static void gil_greenlet_release() { static PyObject *py_uwsgi_greenlet_request(PyObject * self, PyObject *args) { + struct wsgi_request *wsgi_req = uwsgi.wsgi_req; + async_schedule_to_req_green(); - //Py_DECREF(ugl.gl[uwsgi.wsgi_req->async_id]); + Py_DECREF(ugl.gl[wsgi_req->async_id]); Py_INCREF(Py_None); return Py_None;