summaryrefslogtreecommitdiffstats
path: root/libexec/telnetd/telnetd.c
diff options
context:
space:
mode:
authorpst <pst@FreeBSD.org>1995-09-05 17:34:29 +0000
committerpst <pst@FreeBSD.org>1995-09-05 17:34:29 +0000
commite7519fbb2baae042c7670e7c6db5e4f70767a9a0 (patch)
tree129b4c41aa0c32655b959f1694ff06a0a3eb556a /libexec/telnetd/telnetd.c
parent1946a609dcf322bb2959db2075db4c43cd9f8b4f (diff)
downloadFreeBSD-src-e7519fbb2baae042c7670e7c6db5e4f70767a9a0.zip
FreeBSD-src-e7519fbb2baae042c7670e7c6db5e4f70767a9a0.tar.gz
Delay starting login process until option negotiation is complete to
avoid race condition on connections with larger round-trip-times. Submitted by: John Capo & Peter Wemm
Diffstat (limited to 'libexec/telnetd/telnetd.c')
-rw-r--r--libexec/telnetd/telnetd.c29
1 files changed, 7 insertions, 22 deletions
diff --git a/libexec/telnetd/telnetd.c b/libexec/telnetd/telnetd.c
index 87e017d..155ef56 100644
--- a/libexec/telnetd/telnetd.c
+++ b/libexec/telnetd/telnetd.c
@@ -740,11 +740,7 @@ char *hostname;
char host_name[MAXHOSTNAMELEN];
char remote_host_name[MAXHOSTNAMELEN];
-#ifndef convex
-extern void telnet P((int, int));
-#else
extern void telnet P((int, int, char *));
-#endif
/*
* Get a pty, scan input lines.
@@ -834,12 +830,6 @@ doit(who)
level = getterminaltype(user_name);
setenv("TERM", terminaltype ? terminaltype : "network", 1);
- /*
- * Start up the login process on the slave side of the terminal
- */
-#ifndef convex
- startslave(host, level, user_name);
-
#if defined(_SC_CRAY_SECURE_SYS)
if (secflag) {
if (setulvl(dv.dv_actlvl) < 0)
@@ -849,10 +839,8 @@ doit(who)
}
#endif /* _SC_CRAY_SECURE_SYS */
- telnet(net, pty); /* begin server processing */
-#else
- telnet(net, pty, host);
-#endif
+ telnet(net, pty, host); /* begin server process */
+
/*NOTREACHED*/
} /* end of doit */
@@ -876,15 +864,9 @@ Xterm_output(ibufp, obuf, icountp, ocount)
* hand data to telnet receiver finite state machine.
*/
void
-#ifndef convex
-telnet(f, p)
-#else
telnet(f, p, host)
-#endif
int f, p;
-#ifdef convex
char *host;
-#endif
{
int on = 1;
#define TABBUFSIZ 512
@@ -1120,9 +1102,12 @@ telnet(f, p, host)
{sprintf(nfrontp, "td: Entering processing loop\r\n");
nfrontp += strlen(nfrontp);});
-#ifdef convex
+ /*
+ * Startup the login process on the slave side of the terminal
+ * now. We delay this until here to insure option negotiation
+ * is complete.
+ */
startslave(host);
-#endif
for (;;) {
fd_set ibits, obits, xbits;
OpenPOWER on IntegriCloud