sshd 3.9p1 under Reliant Unix 5.45: getpeername: Operation not supported on transport endpoint
Robert Dahlem
Robert.Dahlem at gmx.net
Sat Aug 28 04:31:10 EST 2004
On Thu, 26 Aug 2004 14:52:08 -0700 (PDT), Tim Rice wrote:
>>>> The following is special to sshd 3.9p1 under ReliantUnix 5.45. It
>>>> does not occur under ReliantUnix 5.43 nor under Solaris 5.8:
>[snip]
>> Libraries: -lcrypto -lz -lsocket -lnsl -ldl -lgen -lresolv
>Just for fun try editing your Makefiles so LIBS are
> -lcrypto -lz -ldl -lgen -lsocket -lresolv -lnsl
>and then "make clean && make"
It's not related to library order (doesn't change the behaviour).
Meanwhile I broke it down to something strange. In sshd.c you will find
this piece of code in main():
/* Start listening for a socket, unless started from inetd. */
if (inetd_flag) {
int fd;
startup_pipe = -1;
if (rexeced_flag) {
close(REEXEC_CONFIG_PASS_FD);
sock_in = sock_out = dup(STDIN_FILENO);
Under ReliantUnix 5.43 you can do successful
getpeername(STDIN_FILENO, ...)
getpeername(sock_in, ...)
after this.
Under ReliantUnix 5.45
getpeername(STDIN_FILENO, ...) is successful
getpeername(sock_in, ...) returns -1, errno=EOPNOTSUPP
Can it be that my dup() is somehow broken? This wouldn't leave much to
work on this machine, would it?
Regards,
Robert
More information about the openssh-unix-dev
mailing list