summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/samba/tests/dcerpc/bare.py18
-rw-r--r--source4/librpc/rpc/pyrpc.c8
2 files changed, 26 insertions, 0 deletions
diff --git a/python/samba/tests/dcerpc/bare.py b/python/samba/tests/dcerpc/bare.py
index e101c5bcfcf..270c7af382e 100644
--- a/python/samba/tests/dcerpc/bare.py
+++ b/python/samba/tests/dcerpc/bare.py
@@ -19,6 +19,7 @@
"""Tests for samba.tests.dcerpc.bare."""
+import os
from samba.dcerpc import ClientConnection
import samba.tests
@@ -40,3 +41,20 @@ class BareTestCase(samba.tests.TestCase):
basis_connection=x, lp_ctx=samba.tests.env_loadparm())
self.assertEquals(24, len(x.request(0, chr(0) * 8)))
self.assertEquals("\x01\x00\x00\x00", y.request(0, chr(0) * 4))
+
+ def test_bare_tcp(self):
+ # Connect to the echo pipe
+ x = ClientConnection("ncacn_ip_tcp:%s" % os.environ["SERVER"],
+ ("60a15ec5-4de8-11d7-a637-005056a20182", 1),
+ lp_ctx=samba.tests.env_loadparm())
+ self.assertEquals("\x01\x00\x00\x00", x.request(0, chr(0) * 4))
+
+ def test_two_contexts_tcp(self):
+ x = ClientConnection("ncacn_ip_tcp:%s" % os.environ["SERVER"],
+ ("12345778-1234-abcd-ef00-0123456789ac", 1),
+ lp_ctx=samba.tests.env_loadparm())
+ y = ClientConnection("ncacn_ip_tcp:%s" % os.environ["SERVER"],
+ ("60a15ec5-4de8-11d7-a637-005056a20182", 1),
+ basis_connection=x, lp_ctx=samba.tests.env_loadparm())
+ self.assertEquals(24, len(x.request(0, chr(0) * 8)))
+ self.assertEquals("\x01\x00\x00\x00", y.request(0, chr(0) * 4))
diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c
index d4f13ba89f6..8b817b8b46d 100644
--- a/source4/librpc/rpc/pyrpc.c
+++ b/source4/librpc/rpc/pyrpc.c
@@ -293,6 +293,7 @@ static PyObject *dcerpc_interface_new(PyTypeObject *type, PyObject *args, PyObje
"binding", "syntax", "lp_ctx", "credentials", "basis_connection", NULL
};
static struct ndr_interface_table dummy_table;
+ static struct ndr_interface_string_array dummy_endpoints;
PyObject *args2 = Py_None;
PyObject *kwargs2 = Py_None;
@@ -316,6 +317,13 @@ static PyObject *dcerpc_interface_new(PyTypeObject *type, PyObject *args, PyObje
return NULL;
}
+ /*
+ * Initialise the endpoints list in dummy_table if required
+ */
+ if (dummy_table.endpoints == NULL) {
+ dummy_table.endpoints = &dummy_endpoints;
+ }
+
args2 = Py_BuildValue("(s)", binding_string);
if (args2 == NULL) {
return NULL;