[comp.protocols.tcp-ip] Telnet/telnet release

dab@BERSERKLY.CRAY.COM (David Borman) (09/15/90)

A new BSD version of telnet and telnetd are now available for anonymous
ftp from ucbarpa.berkeley.edu.  There are two files:

	pub/telnet.90.09.14.tar.Z	All the sources
	pub/telnet.90.09.14.diff.Z	Diffs from telnet.90.06.28

This release contains mostly bugfixes, and some POSIX changes.
If you are using one of my earlier version of telnet/telnetd, you'll
probably want to get this new version.  My list of changes started
out pretty small, but then as time went by, more and more little
problems were discovered.  There are no major functionality changes
with this release.  If you have to make changes to get this code
running on your machine, please send me the changes and I'll try
to get them into the next release.

			-David Borman, dab@cray.com

This list was extraced from the README giving more detail as to what
is changed with this release:

	Switch the client to use getopt() for parsing the
	argument list.  The 4.3Reno getopt.c is included for
	systems that don't have getopt().

	Use the posix _POSIX_VDISABLE value for what value
	to use when disabling special characters.  If this
	is undefined, it defaults to 0x3ff.

	For non-termio systems, TIOCSETP was being used to
	change the state of the terminal.  This causes the
	input queue to be flushed, which we don't want.  This
	is now changed to TIOCSETN.

	Take out the "#ifdef notdef" around the code in the
	server that generates a "sync" when the pty oputput
	is flushed.  The potential problem is that some older
	telnet clients may go into an infinate loop when they
	receive a "sync", if so, the server can be compiled
	with "NO_URGENT" defined.

	Fix the client where it was setting/clearing the OPOST
	bit in the c_lflag field, not the c_oflag field.

	Fix the client where it was setting/clearing the ISTRIP
	bit in the c_lflag field, not the c_iflag field.  (On
	4.3Reno, this is the ECHOPRT bit in the c_lflag field.)
	The client also had its interpretation of WILL BINARY
	and DO BINARY reversed.

	Fix a bug in client that would cause a core dump when
	attempting to remove the last environment variable.

	In the client, there were a few places were switch()
	was being passed a character, and if it was a negative
	value, it could get sign extended, and not match
	the 8 bit case statements.  The fix is to and the
	switch value with 0xff.

	Add a couple more printoption() calls in the client, I
	don't think there are any more places were a telnet
	command can be received and not printed out when
	"options" is on.

	A new flag has been added to the client, "-a".  Currently,
	this just causes the USER name to be sent across, in
	the future this may be used to signify that automatic
	authentication is requested.

	The USER variable is now only sent by the client if
	the "-a" or "-l user" options are explicity used, or
	if the user explicitly asks for the "USER" environment
	variable to be exported.  In the server, if it receives
	the "USER" environment variable, it won't print out the
	banner message, so that only "Password:" will be printed.
	This makes the symantics more like rlogin, and should be
	more familiar to the user.  (People are not used to
	getting a banner message, and then getting just a
	"Password:" prompt.)

	Re-vamp the code for starting up the child login
	process.  The code was getting ugly, and it was
	hard to tell what was really going on.  What we
	do now is after the fork(), in the child:
		1) make sure we have no controlling tty
		2) open and initialize the tty
		3) do a setsid()/setpgrp()
		4) makes the tty our controlling tty.
	On some systems, #2 makes the tty our controlling
	tty, and #4 is a no-op.  The parent process does
	a gets rid of any controlling tty after the child
	is fork()ed.

	Use the strdup() library routine in telnet, instead
	of the local savestr() routine.  If you don't have
	strdup(), you need to define NO_STRDUP.

	Add support for ^T (SIGINFO/VSTATUS), found in the
	4.3Reno distribution.  This maps to the AYT character.

	The client is now smarter when setting the telnet escape
	character; it only sets it to one of VEOL and VEOL2 if
	one of them is undefined, and the other one is not already
	defined to the telnet escape character.

	Handle TERMIOS systems that have seperate input and output
	line speed settings imbedded in the flags.

	Many other minor bug fixes.

kannan@OAR.NET (Kannan Varadhan) (09/16/90)

From: dab@BERSERKLY.CRAY.COM (David Borman)
Date: 14 Sep 90 22:28:38 GMT

> A new BSD version of telnet and telnetd are now available for anonymous
> ftp from ucbarpa.berkeley.edu.  There are two files:
> 
> 	pub/telnet.90.09.14.tar.Z	All the sources
> 	pub/telnet.90.09.14.diff.Z	Diffs from telnet.90.06.28

Dave, and any of you who picked this up,

there is a typo in the telnetd source.  I made the following changes
below...

I am compiling this on a Sun 3/60, running SunOS4.0.3.

manhandler telnetd. rcsdiff sys_term.c
===================================================================
RCS file: RCS/sys_term.c,v
retrieving revision 1.1
diff -r1.1 sys_term.c
87c87
< #   define    tcgetattr(f, t) iotcl(f, TCGETS, t)
---
> #   define    tcgetattr(f, t) ioctl(f, TCGETS, t)
96c96
< #    define   tcgetattr(f, t) iotcl(f, TIOCGETA, t)
---
> #    define   tcgetattr(f, t) ioctl(f, TIOCGETA, t)


Kannan

-=-
Kannan Varadhan, Internet Engineer, OARNet
Ohio Supercomputer Center, Columbus, OH 43212	+1 (614) 292-4137
email:	kannan@oar.net	|  osu-cis!malgudi.oar.net!kannan