diff options
-rw-r--r-- | python/samba/tests/messaging.py | 8 | ||||
-rw-r--r-- | source4/lib/messaging/pymessaging.c | 18 |
2 files changed, 26 insertions, 0 deletions
diff --git a/python/samba/tests/messaging.py b/python/samba/tests/messaging.py index 1c5dfe505b6..3eeab529527 100644 --- a/python/samba/tests/messaging.py +++ b/python/samba/tests/messaging.py @@ -22,6 +22,7 @@ import samba from samba.messaging import Messaging from samba.tests import TestCase from samba.dcerpc.server_id import server_id +from samba.ndr import ndr_print class MessagingTests(TestCase): @@ -52,6 +53,13 @@ class MessagingTests(TestCase): def test_add_name(self): x = self.get_context() x.irpc_add_name("samba.messaging test") + name_list = x.irpc_servers_byname("samba.messaging test") + self.assertEqual(len(name_list), 1) + self.assertEqual(ndr_print(x.server_id), + ndr_print(name_list[0])) + x.irpc_remove_name("samba.messaging test") + self.assertEqual([], + x.irpc_servers_byname("samba.messaging test")) def test_ping_speed(self): server_ctx = self.get_context((0, 1)) diff --git a/source4/lib/messaging/pymessaging.c b/source4/lib/messaging/pymessaging.c index 5c20c186faf..5b5408caddb 100644 --- a/source4/lib/messaging/pymessaging.c +++ b/source4/lib/messaging/pymessaging.c @@ -260,6 +260,20 @@ static PyObject *py_irpc_add_name(PyObject *self, PyObject *args, PyObject *kwar Py_RETURN_NONE; } +static PyObject *py_irpc_remove_name(PyObject *self, PyObject *args, PyObject *kwargs) +{ + imessaging_Object *iface = (imessaging_Object *)self; + char *server_name; + + if (!PyArg_ParseTuple(args, "s", &server_name)) { + return NULL; + } + + irpc_remove_name(iface->msg_ctx, server_name); + + Py_RETURN_NONE; +} + static PyObject *py_irpc_servers_byname(PyObject *self, PyObject *args, PyObject *kwargs) { imessaging_Object *iface = (imessaging_Object *)self; @@ -364,6 +378,10 @@ static PyMethodDef py_imessaging_methods[] = { "S.irpc_add_name(name) -> None\n" "Add this context to the list of server_id values that " "are registered for a particular name" }, + { "irpc_remove_name", (PyCFunction)py_irpc_remove_name, METH_VARARGS, + "S.irpc_remove_name(name) -> None\n" + "Remove this context from the list of server_id values that " + "are registered for a particular name" }, { "irpc_servers_byname", (PyCFunction)py_irpc_servers_byname, METH_VARARGS, "S.irpc_servers_byname(name) -> list\nGet list of server_id values that are registered for a particular name" }, { "irpc_all_servers", (PyCFunction)py_irpc_all_servers, METH_NOARGS, |