talkd incompatibilities

Guy Harris auspex!guy at uunet.uu.net
Fri May 12 18:16:31 AEST 1989


>The reason for the incompatible talk programs is that 3.x systems use the
>4.2 talkd and 4.x uses the 4.3 BSD talkd.

Uhh, no, it doesn't:

	Script started on Fri May 12 00:58:57 1989
	auspex% cat /etc/motd
	SunOS Release 4.0 (AUSPEX) #1: Tue Apr 11 07:08:26 PDT 1989
	auspex% egrep talk /home/unix_src/bsd4.3/sys/dist/services
	talk		517/udp
	ntalk		518/udp
	auspex% egrep talk /etc/services
	talk		517/udp
	auspex% egrep talk /home/unix_src/bsd4.3/sys/dist/inetd.conf
	talk	dgram	udp	wait	root	/etc/talkd	talkd
	ntalk	dgram	udp	wait	root	/etc/ntalkd	ntalkd
	auspex% egrep talk /etc/inetd.conf
	talk	dgram	udp	wait	root	/usr/etc/in.talkd in.talkd
	auspex% 
	script done on Fri May 12 00:59:11 1989

(Besides, I know for certain nobody put the 4.3BSD "talk" into SunOS 4.0 -
I was there....)

No SunOS release has picked up the 4.3 "talk" as of yet; they have,
however, hacked the old "talk" up to try to make it work right between
hosts with different byte orders (VAX and 68K, at least) and later, in
4.0, between hosts with different data alignments (68K and SPARC, at
least).

The 4.3 "talk" stuff was changed to 1) put things in network order before
shoving them out on the wire and 2) set up the structures so that, with
any luck, they'll have the same layout regardless of the alignment rules
on your compiler.  This makes them incompatible with the old "talk", so
Berkeley changed the port number from 517 to 518.

Unfortunately, the new version doesn't check whether there's a new version
on the remote machine (it might be able to do this by detecting the error
that an ICMP Port Unreachable generates - ECONNREFUSED, I think - by
"connecting" to the remote host) and fall back on the old protocol;
instead, I guess you're stuck with running "/usr/old/talk" if "talk" by
itself doesn't work.

>I have confirmed this "talk"ing with some friends at Harvard and
>Berserkley from 3.5 and 4.0 systems.  If they run 4.2 BSD I can "talk"
>with them from 3.5 but not 4.0, and if they are running 4.3 BSD I can
>"talk with them on a 4.0 system but not from a 3.5 system.  After I
>noticed that I went and read the Berserkely docs and found the note.

4.3BSD runs both an "old" and "new" talk daemon, by default; presumably,
when you "talk" to a 4.3BSD system it contacts the old one.  SunOS [34].x,
as it comes from Sun, isn't going to try to talk to the new one.... 

If your friends aren't running "/usr/old/talk" to talk to you, then either
your SunOS system or their BSD system has been hacked.

As for the differences between the two, the only thing I can think of is
that there's some difference between the 4.2BSD "talk" and the 4.3BSD "old
talk" that affects interoperatibility with different flavors of Sun's
"talk".



More information about the Comp.sys.sun mailing list