summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/samba/tests/messaging.py8
-rw-r--r--source4/lib/messaging/pymessaging.c18
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,