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