[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Thu Mar 18 06:38:12 MDT 2010


The branch, master has been updated
       via  30aa55a... pidl:Samba4/Python: make use of dcerpc_binding_handle stubs
       via  5e9ce49... s4:librpc/rpc: let pyrpc make use of dcerpc_binding_handle stubs
       via  f055fce... pidl:Samba4/Python: remove compiler warnings
       via  2624baf... pidl:Samba4/Python: remove compiler warnings when using -Wc++
      from  fd86c9b... s4:utils/net/drs: make use of dcerpc_binding_handle stubs

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 30aa55a998016c5d87691b3592435a21107fe33b
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 18 11:26:19 2010 +0100

    pidl:Samba4/Python: make use of dcerpc_binding_handle stubs
    
    metze

commit 5e9ce495eef98b2b27a77bf042514ccb2037d33d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 18 11:25:21 2010 +0100

    s4:librpc/rpc: let pyrpc make use of dcerpc_binding_handle stubs
    
    metze

commit f055fce74c0f569e8bfcf29e5c4fadb592a7c87d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 18 12:36:57 2010 +0100

    pidl:Samba4/Python: remove compiler warnings
    
    metze

commit 2624bafca532de66ae1d4976f8c2e99f5f7b250e
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 18 10:52:05 2010 +0100

    pidl:Samba4/Python: remove compiler warnings when using -Wc++
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 pidl/lib/Parse/Pidl/Samba4/Python.pm |    8 ++++----
 source4/librpc/rpc/dcerpc.h          |    2 --
 source4/librpc/rpc/pyrpc.c           |    5 ++++-
 source4/librpc/rpc/pyrpc.h           |    4 +++-
 4 files changed, 11 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm
index a6c2738..5cf619b 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -657,14 +657,14 @@ sub Interface($$$)
 
 			my ($infn, $outfn, $fndocstring) = $self->PythonFunction($d, $interface->{NAME}, $prettyname);
 
-			push (@fns, [$infn, $outfn, "dcerpc_$d->{NAME}", $prettyname, $fndocstring, $d->{OPNUM}]);
+			push (@fns, [$infn, $outfn, "dcerpc_$d->{NAME}_r", $prettyname, $fndocstring, $d->{OPNUM}]);
 		}
 
 		$self->pidl("const struct PyNdrRpcMethodDef py_ndr_$interface->{NAME}\_methods[] = {");
 		$self->indent;
 		foreach my $d (@fns) {
 			my ($infn, $outfn, $callfn, $prettyname, $docstring, $opnum) = @$d;
-			$self->pidl("{ \"$prettyname\", $docstring, (dcerpc_call_fn)$callfn, (py_data_pack_fn)$infn, (py_data_unpack_fn)$outfn, $opnum, &ndr_table_$interface->{NAME} },");
+			$self->pidl("{ \"$prettyname\", $docstring, (py_dcerpc_call_fn)$callfn, (py_data_pack_fn)$infn, (py_data_unpack_fn)$outfn, $opnum, &ndr_table_$interface->{NAME} },");
 		}
 		$self->pidl("{ NULL }");
 		$self->deindent;
@@ -727,7 +727,7 @@ sub register_module_typeobject($$$)
 {
 	my ($self, $name, $py_name) = @_;
 
-	$self->register_module_object($name, "(PyObject *)$py_name");
+	$self->register_module_object($name, "(PyObject *)(void *)$py_name");
 
 	$self->check_ready_type($py_name);
 
@@ -833,7 +833,7 @@ sub ConvertObjectFromPythonData($$$$$$;$)
 			return;
 		}
 		$self->pidl("PY_CHECK_TYPE($ctype_name, $cvar, $fail);");
-		$self->assign($target, "py_talloc_get_ptr($cvar)");
+		$self->assign($target, "(".mapTypeName($ctype)." *)py_talloc_get_ptr($cvar)");
 		return;
 	}
 
diff --git a/source4/librpc/rpc/dcerpc.h b/source4/librpc/rpc/dcerpc.h
index 08210e0..70e90c4 100644
--- a/source4/librpc/rpc/dcerpc.h
+++ b/source4/librpc/rpc/dcerpc.h
@@ -392,8 +392,6 @@ NTSTATUS dcerpc_request(struct dcerpc_pipe *p,
 			DATA_BLOB *stub_data_in,
 			DATA_BLOB *stub_data_out);
 
-typedef NTSTATUS (*dcerpc_call_fn) (struct dcerpc_pipe *, TALLOC_CTX *, void *);
-
 enum dcerpc_transport_t dcerpc_transport_by_endpoint_protocol(int prot);
 
 const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor);
diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c
index 00bc683..012f188 100644
--- a/source4/librpc/rpc/pyrpc.c
+++ b/source4/librpc/rpc/pyrpc.c
@@ -57,7 +57,7 @@ static PyObject *py_dcerpc_run_function(dcerpc_InterfaceObject *iface,
 		return NULL;
 	}
 
-	status = md->call(iface->pipe, mem_ctx, r);
+	status = md->call(iface->binding_handle, mem_ctx, r);
 	if (NT_STATUS_IS_ERR(status)) {
 		PyErr_SetDCERPCStatus(iface->pipe, status);
 		talloc_free(mem_ctx);
@@ -356,6 +356,7 @@ PyObject *py_dcerpc_interface_init_helper(PyTypeObject *type, PyObject *args, Py
 	}
 
 	ret->pipe->conn->flags |= DCERPC_NDR_REF_ALLOC;
+	ret->binding_handle = ret->pipe->binding_handle;
 	return (PyObject *)ret;
 }
 
@@ -425,6 +426,7 @@ static PyObject *dcerpc_interface_new(PyTypeObject *self, PyObject *args, PyObje
 	}
 
 	ret->pipe = NULL;
+	ret->binding_handle = NULL;
 
 	if (py_basis != Py_None) {
 		struct dcerpc_pipe *base_pipe;
@@ -451,6 +453,7 @@ static PyObject *dcerpc_interface_new(PyTypeObject *self, PyObject *args, PyObje
 		return NULL;
 	}
 	ret->pipe->conn->flags |= DCERPC_NDR_REF_ALLOC;
+	ret->binding_handle = ret->pipe->binding_handle;
 	return (PyObject *)ret;
 }
 
diff --git a/source4/librpc/rpc/pyrpc.h b/source4/librpc/rpc/pyrpc.h
index efbcac6..3233754 100644
--- a/source4/librpc/rpc/pyrpc.h
+++ b/source4/librpc/rpc/pyrpc.h
@@ -44,6 +44,7 @@
 typedef struct {
 	PyObject_HEAD
 	struct dcerpc_pipe *pipe;
+	struct dcerpc_binding_handle *binding_handle;
 } dcerpc_InterfaceObject;
 
 PyAPI_DATA(PyTypeObject) dcerpc_InterfaceType;
@@ -55,13 +56,14 @@ PyAPI_DATA(PyTypeObject) dcerpc_InterfaceType;
 
 void PyErr_SetDCERPCStatus(struct dcerpc_pipe *p, NTSTATUS status);
 
+typedef NTSTATUS (*py_dcerpc_call_fn) (struct dcerpc_binding_handle *, TALLOC_CTX *, void *);
 typedef bool (*py_data_pack_fn) (PyObject *args, PyObject *kwargs, void *r);
 typedef PyObject *(*py_data_unpack_fn) (void *r);
 
 struct PyNdrRpcMethodDef {
 	const char *name;
 	const char *doc;
-	dcerpc_call_fn call;
+	py_dcerpc_call_fn call;
 	py_data_pack_fn pack_in_data;
 	py_data_unpack_fn unpack_out_data;
 	uint32_t opnum;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list