s3-rpc_server: Only support static build.

Andreas Schneider asn at samba.org
Mon Dec 20 06:51:17 MST 2010


Hi Team,

we face some issues with the RPC service init and shutdown functions. In the 
past it was possible to compile RPC services as shared modules or as static 
modules linked directly into smbd.

This approach has some issues. Some RPC services depend on other RPC services, 
so the order in which the RPC services are set up matters. That the configure 
script created only a list of init functions but we need to call the shutdown 
functions in the reverse order we set it up.

Maybe you know that we have rewritten large parts of the spoolss code and used 
winreg instead of tdb files. With these changed and other changes to remove 
global variables in Samba we had to introduce a way to call functions for 
maintenance when a RPC service starts. We created a structure called 
'rpc_srv_callbacks' where you can set an init and shutdown function and a 
pointer for userdata. With this structure the function prototype has changed 
from:

NTSTATUS rpc_<service>_init(void);

to

NTSTATUS rpc_<service>_init(const struct rpc_srv_callbacks *rpc_srv_cb);

For spoolss we use an init function you can set with the callback structure to 
migrate the printing tdb's to winreg and we use a shutdown function to clean 
up memory.

The shutdown functions were never called and they are needed. Another task of 
this function is to register or deregister RPC services in smbd.

So here is a proposed patchset which calls the init functions in the right 
order, calls the needed shutdown functions and builds the RPC services only 
staically.

http://git.samba.org/?p=asn/samba.git;a=shortlog;h=refs/heads/s3-fixes


Regards,


	-- andreas



More information about the samba-technical mailing list