summaryrefslogtreecommitdiff
path: root/src/multi.c
diff options
context:
space:
mode:
authorOleg Pudeyev <oleg@bsdpower.com>2014-06-24 15:06:55 -0400
committerOleg Pudeyev <oleg@bsdpower.com>2014-06-24 15:08:08 -0400
commitd5bc4e7a4d79cd413d5e4bc466d84b0fa060d071 (patch)
tree3b2aabc4c335d78d63eebf4b222c28edec71bba8 /src/multi.c
parent6f766acda7686a26e7471051c4a166d6cf2ebbcd (diff)
downloadpycurl-d5bc4e7a4d79cd413d5e4bc466d84b0fa060d071.tar.gz
Prohibit (de)serialization of Curl* objects.
This code seems to be necessary on Python 3. On Python 2, serialization was already not working.
Diffstat (limited to 'src/multi.c')
-rw-r--r--src/multi.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/multi.c b/src/multi.c
index f902caf..ea1c79c 100644
--- a/src/multi.c
+++ b/src/multi.c
@@ -734,6 +734,20 @@ do_multi_select(CurlMultiObject *self, PyObject *args)
}
+static PyObject *do_curlmulti_getstate(CurlMultiObject *self)
+{
+ PyErr_SetString(PyExc_TypeError, "CurlMulti objects do not support serialization");
+ return NULL;
+}
+
+
+static PyObject *do_curlmulti_setstate(CurlMultiObject *self, PyObject *args)
+{
+ PyErr_SetString(PyExc_TypeError, "CurlMulti objects do not support deserialization");
+ return NULL;
+}
+
+
/*************************************************************************
// type definitions
**************************************************************************/
@@ -753,6 +767,8 @@ PYCURL_INTERNAL PyMethodDef curlmultiobject_methods[] = {
{"assign", (PyCFunction)do_multi_assign, METH_VARARGS, NULL},
{"remove_handle", (PyCFunction)do_multi_remove_handle, METH_VARARGS, multi_remove_handle_doc},
{"select", (PyCFunction)do_multi_select, METH_VARARGS, multi_select_doc},
+ {"__getstate__", (PyCFunction)do_curlmulti_getstate, METH_NOARGS, NULL},
+ {"__setstate__", (PyCFunction)do_curlmulti_setstate, METH_VARARGS, NULL},
{NULL, NULL, 0, NULL}
};