diff --git a/frida/__init__.py b/frida/__init__.py index 334abad..fbc08c6 100644 --- a/frida/__init__.py +++ b/frida/__init__.py @@ -94,8 +94,9 @@ def enumerate_devices(**kwargs): return get_device_manager().enumerate_devices(**kwargs) -def shutdown(**kwargs): - get_device_manager()._impl.close(**kwargs) +@core.cancellable +def shutdown(): + get_device_manager()._impl.close() global _device_manager diff --git a/src/_frida.c b/src/_frida.c index afecf7d..8b4dd11 100644 --- a/src/_frida.c +++ b/src/_frida.c @@ -1826,9 +1826,13 @@ PyDeviceManager_dealloc (PyDeviceManager * self) static PyObject * PyDeviceManager_close (PyDeviceManager * self) { + GError * error = NULL; + Py_BEGIN_ALLOW_THREADS - frida_device_manager_close_sync (PY_GOBJECT_HANDLE (self), NULL, NULL); + frida_device_manager_close_sync (PY_GOBJECT_HANDLE (self), g_cancellable_get_current (), &error); Py_END_ALLOW_THREADS + if (error != NULL) + return PyFrida_raise (error); Py_RETURN_NONE; }