diff --git a/plugins/python/uwsgi_pymodule.c b/plugins/python/uwsgi_pymodule.c index 8623c577..ec8488a3 100644 --- a/plugins/python/uwsgi_pymodule.c +++ b/plugins/python/uwsgi_pymodule.c @@ -1243,36 +1243,36 @@ PyObject *py_uwsgi_send_spool(PyObject * self, PyObject * args, PyObject *kw) { return PyErr_Format(PyExc_ValueError, "The argument of spooler callable must be a dictionary"); } - PyObject *pyprio = PyDict_GetItemString(spool_dict, "priority"); + PyObject *pyprio = uwsgi_py_dict_get(spool_dict, "priority"); if (pyprio) { if (PyInt_Check(pyprio)) { numprio = PyInt_AsLong(pyprio); - PyDict_DelItemString(spool_dict, "priority"); + uwsgi_py_dict_del(spool_dict, "priority"); } } - PyObject *pyat = PyDict_GetItemString(spool_dict, "at"); + PyObject *pyat = uwsgi_py_dict_get(spool_dict, "at"); if (pyat) { if (PyInt_Check(pyat)) { at = (time_t) PyInt_AsLong(pyat); - PyDict_DelItemString(spool_dict, "at"); + uwsgi_py_dict_del(spool_dict, "at"); } else if (PyLong_Check(pyat)) { at = (time_t) PyLong_AsLong(pyat); - PyDict_DelItemString(spool_dict, "at"); + uwsgi_py_dict_del(spool_dict, "at"); } else if (PyFloat_Check(pyat)) { at = (time_t) PyFloat_AsDouble(pyat); - PyDict_DelItemString(spool_dict, "at"); + uwsgi_py_dict_del(spool_dict, "at"); } } - PyObject *pybody = PyDict_GetItemString(spool_dict, "body"); + PyObject *pybody = uwsgi_py_dict_get(spool_dict, "body"); if (pybody) { if (PyString_Check(pybody)) { body = PyString_AsString(pybody); body_len = PyString_Size(pybody); - PyDict_DelItemString(spool_dict, "body"); + uwsgi_py_dict_del(spool_dict, "body"); } } @@ -1293,6 +1293,8 @@ PyObject *py_uwsgi_send_spool(PyObject * self, PyObject * args, PyObject *kw) { key = PyTuple_GetItem(zero, 0); val = PyTuple_GetItem(zero, 1); + uwsgi_log("ob_type %s %s\n", key->ob_type->tp_name, val->ob_type->tp_name); + if (PyString_Check(key) && PyString_Check(val)) { diff --git a/plugins/python/uwsgi_python.h b/plugins/python/uwsgi_python.h index a9464b5c..d59a28cf 100644 --- a/plugins/python/uwsgi_python.h +++ b/plugins/python/uwsgi_python.h @@ -61,10 +61,14 @@ PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(char *, Py_ssize_t); #define PyString_Concat PyBytes_Concat #define PyString_AsString (char *) PyBytes_AsString #define PyFile_FromFile(A,B,C,D) PyFile_FromFd(fileno((A)), (B), (C), -1, NULL, NULL, NULL, 0) +#define uwsgi_py_dict_get(a, b) PyDict_GetItem(a, PyBytes_FromString(b)); +#define uwsgi_py_dict_del(a, b) PyDict_DelItem(a, PyBytes_FromString(b)); #else #define UWSGI_PYFROMSTRING(x) PyString_FromString(x) #define UWSGI_PYFROMSTRINGSIZE(x, y) PyString_FromStringAndSize(x, y) +#define uwsgi_py_dict_get(a, b) PyDict_GetItemString(a, b) +#define uwsgi_py_dict_del(a, b) PyDict_DelItemString(a, b) #endif #define LOADER_DYN 0