After upgrading to RH 7.0 cvspserver stopped working correctly. The cvs is called with wrong arguments by xinetd so this is due to changing from inetd to xinetd. The problematic part seems not only be the conversion from inetd configuration files to xinetd ones, but rather the way xinetd parses server_args. /etc/xinetd.d/cvspserver includes: ... server = /usr/bin/cvs server_args = cvs --allow-root=/some/dir pserver ... I removed 'cvs' from server_args but that not having been helpful I reasoned out that the problem lies probably in the equals sign '=' within arguments. This results in cvs being called with erraneous args when connecting to cvspserver port. As a workaround I created a shell script that calls cvs with correct arguments which seems to work for now.
If you use: server = /usr/bin/cvs server_args = --allow-root=/some/dir pserver and do 'service xinetd reload', do things work? (I.e. had you restarted xinetd after changing the cvspserver file?)
Of course. Otherwise the workaround script would not have worked either. In other words: restarting does not help. As I telnetted to port 2401, with those server_args, the cvs responded with the list of commands i.e. the 'pserver' argument did not seem to make its way through xinetd. If --allow-root=... is removed it works as it should, (denying the tried directory, this, however is not of much use).
How does the entire file in /etc/xinetd.d/ look?
Well, well. Tried it again, and without 'cvs' in server_args it seems to work fine after all. Obviously as I was trying out various combinations I forgot to restart xinetd after this very first try and went straight to the other alternatives. So, the only bug was that 'cvs' itself was included in server_args which, I guess, was already reported. Sorry for the inconvenience :-)