ssh suicides if the remote end disconnects in the middle of protocol negoitation. The hooks are all there to prevent this but where not used - perhaps the author was interrupted during the implementation? :-) -Steve Reference: /n/sources/patch/applied/ssh-suicide Date: Fri Jun 24 16:40:46 CES 2005 --- /sys/src/cmd/ssh/authtis.c Fri Jun 24 16:36:35 2005 +++ /sys/src/cmd/ssh/authtis.c Fri Jun 24 16:36:33 2005 @@ -13,7 +13,7 @@ debug(DBG_AUTH, "try TIS\n"); sendmsg(allocmsg(c, SSH_CMSG_AUTH_TIS, 0)); - m = recvmsg(c, 0); + m = recvmsg(c, -1); switch(m->type){ default: badmsg(m, SSH_SMSG_AUTH_TIS_CHALLENGE); @@ -44,7 +44,7 @@ putstring(m, resp); sendmsg(m); - m = recvmsg(c, 0); + m = recvmsg(c, -1); switch(m->type){ default: badmsg(m, 0); --- /sys/src/cmd/ssh/agent.c Fri Jun 24 16:36:50 2005 +++ /sys/src/cmd/ssh/agent.c Fri Jun 24 16:36:46 2005 @@ -172,7 +172,7 @@ m = allocmsg(c, SSH_CMSG_AGENT_REQUEST_FORWARDING, 0); sendmsg(m); - m = recvmsg(c, 0); + m = recvmsg(c, -1); switch(m->type){ case SSH_SMSG_SUCCESS: debug(DBG_AUTH, "agent allocated\n"); --- /sys/src/cmd/ssh/authpasswd.c Fri Jun 24 16:37:04 2005 +++ /sys/src/cmd/ssh/authpasswd.c Fri Jun 24 16:37:02 2005 @@ -17,7 +17,7 @@ putstring(m, up->passwd); sendmsg(m); - m = recvmsg(c, 0); + m = recvmsg(c, -1); switch(m->type){ default: badmsg(m, 0); --- /sys/src/cmd/ssh/authrsa.c Fri Jun 24 16:37:23 2005 +++ /sys/src/cmd/ssh/authrsa.c Fri Jun 24 16:37:21 2005 @@ -38,7 +38,7 @@ putmpint(m, mod); sendmsg(m); mpfree(mod); - m = recvmsg(c, 0); + m = recvmsg(c, -1); switch(m->type){ case SSH_SMSG_FAILURE: debug(DBG_AUTH, "\tnot accepted\n", (char*)rpc->arg); @@ -87,7 +87,7 @@ putbytes(m, response, MD5dlen); sendmsg(m); - m = recvmsg(c, 0); + m = recvmsg(c, -1); switch(m->type){ case SSH_SMSG_FAILURE: free(m);