svn commit: samba r464 - in branches/SAMBA_4_0/source: build/pidl
librpc/idl rpc_server rpc_server/common rpc_server/echo
rpc_server/samr rpc_server/srvsvc rpc_server/winreg
rpc_server/wkssvc
tridge at samba.org
tridge at samba.org
Tue May 4 06:07:52 GMT 2004
Author: tridge
Date: 2004-05-04 06:07:52 +0000 (Tue, 04 May 2004)
New Revision: 464
Modified:
branches/SAMBA_4_0/source/build/pidl/server.pm
branches/SAMBA_4_0/source/build/pidl/template.pm
branches/SAMBA_4_0/source/librpc/idl/srvsvc.idl
branches/SAMBA_4_0/source/rpc_server/common/common.h
branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h
branches/SAMBA_4_0/source/rpc_server/echo/rpc_echo.c
branches/SAMBA_4_0/source/rpc_server/samr/dcesrv_samr.c
branches/SAMBA_4_0/source/rpc_server/srvsvc/dcesrv_srvsvc.c
branches/SAMBA_4_0/source/rpc_server/winreg/rpc_winreg.c
branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c
Log:
a big improvement to the API for writing server-side RPC
servers. Previously the server pipe code needed to return the RPC
level status (nearly always "OK") and separately set the function call
return using r->out.result. All the programmers writing servers
(metze, jelmer and me) were often getting this wrong, by doing things
like "return NT_STATUS_NO_MEMORY" which was really quite meaningless
as there is no code like that at the dcerpc level.
I have now modified pidl to generate the necessary boilerplate so that
just returning the status you want from the function will work. So for
a NTSTATUS function you return NT_STATUS_XXX and from a WERROR
function you return WERR_XXX. If you really want to generate a DCERPC
level fault rather than just a return value in your function then you
should use the DCESRV_FAULT() macro which will correctly generate a
fault for you.
As a side effect, this also adds automatic type checking of all of our
server side rpc functions, which was impossible with the old API. When
I changed the API I found and fixed quite a few functions with the
wrong type information, so this is definately useful.
I have also changed the server side template generation to generate a
DCERPC "operation range error" by default when you have not yet filled
in a server side function. This allows us to correctly implement
functions in any order in our rpc pipe servers and give the client the
right information about the fault.
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source&rev=464&nolog=1
More information about the samba-cvs
mailing list