[samba-tng] spoolss conversion is complete!

Luke Kenneth Casson Leighton lkcl at samba.org
Fri Jan 28 23:54:07 GMT 2000


On Sat, 29 Jan 2000, Jean Francois Micouleau wrote:

> 
> On Sat, 29 Jan 2000, Luke Kenneth Casson Leighton wrote:
> 
> > ... i didn't say it would work, though :)
> > 
> > jean-francois, if you need any "state" information, e.g a
> > connection_struct, then we're going  to have to do this:
> 
> nope. connection_struct are useless in the rpc code. well in the global
> case, maybe in 1 or 2 cases ??? But not required for the spoolss.

excellent!
 
> > equivalent to what you were doing, anyway, plus i didn't have to think
> > about the horrible implications of trying to set up spoolssd
> > printer-shares the same way as the smbd spawned-process euugh.
> 
> the spoolss code needs to get a list of 'lp_printable()==ok' shares
> including the [printers] one. that's all.

ah.  then what about all the standard_sub() calls that it makes down
through nt_printing.c into printing.c?
 
> 
> Hum well, just something. I've got your idea of splitting the rpc code
> into seperate daemons from smbd, it has a lot of pros, it's an old project
> you had (we talked of that almost 2 years ago at CB1).

you know... yeah, i'd forgotten about that.  good memory.  all i remember
of that visit is it was cold on the roof!


 
> But I really don't get your last 2 weeks work ! Is anybody on this
> list able to explain why splitting the rpc server code is cool ? something
> *really* necessary ? a must have for samba ?

jean-francois, i very rarely stick to the "necessary".

1) it's so that other people can write alternative implementations
(including me!) _without_ having to worry about marshalling and
unmarshalling.  why should they???

2) we can replace the marshalling code with auto-generated code.

3) it's possible to write stubs like this, for use as dynamic-runtime
loading:

spoolss_open(...)
{
	return _spoolss_open(...)
}

...
...

that way, if i convert all the smbd code (e.g domain_client_validate()) to
use client-side msrpc functions, i can convince andrew (i hope!) to use it
in cvs main, because you either load (dynamically) this:

dlopen("samrloopback.so")

or this:

dlopen("samrmarshall.so")

the samrloopback.so contains this:

samr_open(...)
{
	return _samr_open(...)
}

...
...


while the samrmashall.so contains rpc_client/cli_samr.c and what is now
rpc_server/srv_samr.c.



you get the idea?



More information about the samba-technical mailing list