jrtanenb
asked on
Does this indicate a line lenght limitation in inetd.conf ?
I am attempting to start the cvs pserver service. The following line, placed in /etc/inetd.conf correctly starts the service for the repository 'firmware':
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1 1_solaris/ bin/cvs cvs -f --allow-root=/home/mwifi/r epository/ firmware
However, I have multiple repositories that I would like available through the same pserver service. So, I add a couple of more repositories to the command in /etc/inetd.conf:
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1 1_solaris/ bin/cvs cvs -f --allow-root=/home/mwifi/r epository/ firmware-- allow-root =/ho me/mwifi/repository/driver s --allow-root=/home/mwifi/r epository/ TestEngine ering pserver
This works fine.
HOWEVER, when I add one more repository:
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1 1_solaris/ bin/cvs cvs -f --allow-root=/home/mwifi/r epository/ firmware --allow-root=/ho me/mwifi/repository/driver s --allow-root=/home/mwifi/r epository/ TestEngine ering --allow-root=/home/mwifi/r epository/ SWCust pserver
The pserver service will not allow anyone to login. Attempts to login return a consistent error:
cvs -d :pserver:gurhan@dcf401:240 3/home/mwi fi/reposit ory/firmwa re login
CVS password:
CVS [login aborted]: unrecognized auth response from [hostname].
The CVS cedarquist user manual says "unrecognized auth response" errors are caused by a bad command line in 'inetd.conf', typically an invalid option or forgetting to put the 'pserver' command at the end of the line. Another less common problem is invisible control characters that your editor "helpfully" added without you noticing."
I have ruled out invisible control characters.
The command that fails is over 256 characters.
The command that works is under 256 characters.
Solaris5.8 is supposed to have a line limit of 1022 but this does not appear to be holding true with inetd.conf.
Lastly, I rebooted the server starting inetd with the "-l 1022" option, which changes the listener queue length to 1022 characters. This did not help.
I would deeply appreciate some help.
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1
However, I have multiple repositories that I would like available through the same pserver service. So, I add a couple of more repositories to the command in /etc/inetd.conf:
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1
This works fine.
HOWEVER, when I add one more repository:
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1
The pserver service will not allow anyone to login. Attempts to login return a consistent error:
cvs -d :pserver:gurhan@dcf401:240
CVS password:
CVS [login aborted]: unrecognized auth response from [hostname].
The CVS cedarquist user manual says "unrecognized auth response" errors are caused by a bad command line in 'inetd.conf', typically an invalid option or forgetting to put the 'pserver' command at the end of the line. Another less common problem is invisible control characters that your editor "helpfully" added without you noticing."
I have ruled out invisible control characters.
The command that fails is over 256 characters.
The command that works is under 256 characters.
Solaris5.8 is supposed to have a line limit of 1022 but this does not appear to be holding true with inetd.conf.
Lastly, I rebooted the server starting inetd with the "-l 1022" option, which changes the listener queue length to 1022 characters. This did not help.
I would deeply appreciate some help.
ASKER
Thank you for responding.
Actually, the broken lines are just cut-n-paste errors from my posting. In inetd.conf I have absolutely confirmed there are no line breaks. Line breaks have not been the issue. I apologize for the sloppiness in my posting.
Again, thank you for responding.
Actually, the broken lines are just cut-n-paste errors from my posting. In inetd.conf I have absolutely confirmed there are no line breaks. Line breaks have not been the issue. I apologize for the sloppiness in my posting.
Again, thank you for responding.
Looks like a line length issue to me.
However, you might actually try splitting into multiple lines with '\' line-continuation as tfewster shows above. Who knows, the problem might only be in the bit that reads inetd.conf, and not the bit that internally represents the lines to go and exec the program being called.
However, you might actually try splitting into multiple lines with '\' line-continuation as tfewster shows above. Who knows, the problem might only be in the bit that reads inetd.conf, and not the bit that internally represents the lines to go and exec the program being called.
"The command that fails is over 256 characters" and that's where the problem lies. The max command line length for /bin/sh (and other shells) is 256 characters.
One solution to this is to move the repositories to a directory in /, say /CVS. That would allow:
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1 1_solaris/ bin/cvs cvs -f \
--allow-root=/CVS/firmware --allow-root=/CVS/drivers \ --allow-root=/CVS/TestEngi neering \
--allow-root=/CVS/SWCust pserver
which is below the 256 char limit.
One solution to this is to move the repositories to a directory in /, say /CVS. That would allow:
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1
--allow-root=/CVS/firmware
--allow-root=/CVS/SWCust pserver
which is below the 256 char limit.
ASKER
Yes...I had actually tried a similar strategy using symbolic links. This helped me to demonstrate the problem was strictly a line-length issue. The problem I face is that the user community has 12 repositories which I must make available through 1 pserver call (and, therefore, through 1 port). No matter what I do to shrink the paths, 12 repositories will exceed the 256 character limit. So, finally, after much pain, and some help from friends, I discovered that a call, in inetd.conf, like this will work:
cvspserver3 stream tcp nowait root /home/mwifi/cvs_ref/runpse rver.sh
Here is the content of runpserver.sh:
env -i /utils/bin/cvs [space delimited list of repositories] pserver
I am, actually, not sure why this works. However, runpserver.sh returns a result to inetd.conf that does not cause the line limit length to be exceeded.
Interestingly, the line in runpserver.sh far exceeds the 256 character limit. From what I have read, the line limit in Solaris is 1022 characters. However, apparently, for certain utilities like inetd.conf the limit is still 256k.
Thank you, each, for attempting to assist me. Even though your proposals did not fully address the problem I was facing, would you accept 100 points each for your efforts?
cvspserver3 stream tcp nowait root /home/mwifi/cvs_ref/runpse
Here is the content of runpserver.sh:
env -i /utils/bin/cvs [space delimited list of repositories] pserver
I am, actually, not sure why this works. However, runpserver.sh returns a result to inetd.conf that does not cause the line limit length to be exceeded.
Interestingly, the line in runpserver.sh far exceeds the 256 character limit. From what I have read, the line limit in Solaris is 1022 characters. However, apparently, for certain utilities like inetd.conf the limit is still 256k.
Thank you, each, for attempting to assist me. Even though your proposals did not fully address the problem I was facing, would you accept 100 points each for your efforts?
Hmm, good catch on the shell line length.
In this case, this is something to complain to Sun about, since POSIX says that compatible implementations must have a minimum line length of 4096 for shell lines.
In this case, this is something to complain to Sun about, since POSIX says that compatible implementations must have a minimum line length of 4096 for shell lines.
No points for me, as I wasn't even in the right ball park! I'd apologise for querying your original statements, but sometimes the obvious gets overlooked ;-)
jlevie is a Page Editor, so I think he can reduce the points for you.
jlevie is a Page Editor, so I think he can reduce the points for you.
Yes I can reduce the point total for the question. What would you like it to become?
ASKER
100 points seems fair.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I guess I really do not understand the implications of grading. What does assigning a grade mean or do for those who answered the question?
ASKER
OK...I guess a grade is not appropriate, here. Thanks!!
To show control characters when editing a file using vi, type :set list
You'll then see $ symbols to mark any carriage returns. The line would then look like this:
cvspserver3 stream tcp nowait root /sopt/utils/cvs/cvs-1.11.1
Of course, if there are no line breaks in the line, you won't see any $ symbols apart from after the "pserver"...