This is the mail archive of the cygwin-patches@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cygserver patch


"Robert Collins" <robert.collins@syncretize.net> wrote:
> I'm short on time (still!).

I fully understand: it's the basic human condition this century :-)

> Can you generate a patch including the following changes:
> > * Conditionalize the security code so that cygserver works on
non-NT
> > platforms.
> > * Add definitions of the strace XXX_printf macros to allow code to
use
> > these whether it's compiled for the DLL or for the daemon.
> > * Several minor C++ related changes: for example, making some
methods
> > pure virtual, and adding virtual destructors throughout as
required.
> > * Add --version and --help options.
> > * Add checking for an existing instance of the daemon to avoid
having
> > multiple copies running.
> > * Some more error checking throughout.
>
> > * Refactor the client request classes for greater encapsulation
and to
> > support variable length requests.
>
> I need to review the last above change, as variable length requests
were
> already supported.

What I've done is to hold a buffer length and a message length
separate: the message length is in the header and is what is
transmitted back and forth; the buffer length is stored in the
client_request object. Thus when a request arrives, the base class can
check whether the message is too long for the buffer provided by the
base class. I've set things up so that the classes that have no out
parameters, e.g. the version query, set up a buffer big enough to
receive the reply but send a zero-sized body (i.e. no body is sent).
Also, the shmop CREATE request only sends as much of the security
descriptor buffer as necessary, using the length returned by sd_alloc
().

Previously client requests couldn't be of variable size since the code
checked whether they the message bodies were the same size as the
buffer provided for their receipt. Given your comment, maybe I'm
missing something here?

> I think that the ipcs preparation changes should stay
> on the branch for now.

Fair enough: when I've got any code that needs it, i.e. ipcs(8), I'll
bundle it up again.

> If you can generate such a patch, I will review
> it asap (ie a few days :[).

Coming along. Two questions:

*) I've got a better check for the duplicate servers on NT using a
special flag on CreateNamedPipe (introduced in NT5 SP2 and in XP for
security reasons). Would you accept this too?

*) I wasn't clear whether you wanted the client_request changes in the
patch? or, were you just saying to include them and you'd review them?
which is what I'd like you to have meant :-)

Thanks for the reply.

// Conrad




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]