[comp.mail.uucp] 4.3 uucp w/TCP troubles

woods@hao.UCAR.EDU (Greg Woods) (06/30/87)

  We just recently converted to 4.3BSD (from 4.2) and, after wrestling with
4.3's insistance on having fully qualified domain names for everything, I
have gotten just about everything to work as it used to. The one major 
exception is outgoing uucp connections that run over TCP links (please no
flames about how I shouldn't do this and how SMTP is so much better; I'm
well aware of that but simply don't have the time to mess with my sendmail.cf
file right now). What happens is that uucico times out in "tcpopen". It isn't
routing or the name server, because "nslookup" finds these hosts just fine,
and telnet works (even to port 540, uucpd) for all these hosts. The problem
occurs with EVERY host that we connect to for uucp over TCP. Incoming 
connections from all these hosts work fine, and outgoing connections via the
modem also work fine. I had to change my L.sys file to add fully qualified
domain names, or I would get "UNKNOWN HOST", but having gotten past that hurdle,
I now see TIMEOUT, as follows:

woods seismo (6/29-13:35-23579) DEBUG (Local Enabled)
woods seismo (6/29-13:35-23579) NO CALL (RETRY TIME NOT REACHED)
RETRY TIME (600) NOT REACHED
woods seismo (6/29-13:35-23579) continuing anyway (debugging)
finds (seismo) called
getto: call no. seismo.css.gov for sys seismo
Using TCP to call
bsdtcpopn host seismo.css.gov, port 540
TCP CLOSE called
woods seismo (6/29-13:35-23579) TIMEOUT (tcpopen)
woods seismo (6/29-13:35-23579) FAILED (call to seismo )

The L.sys line (minus security info) we use is:

seismo Any TCP uucp seismo.css.gov <login sequence>

If anyone has the faintest idea what I might be doing wrong, I sure would
appreciate any hints.

--Greg
-- 
UUCP: {hplabs, seismo, nbires, noao}!hao!woods
CSNET: woods@ncar.csnet  ARPA: woods%ncar@CSNET-RELAY.ARPA
INTERNET: woods@hao.ucar.edu

schoch@ames.arpa (Steve Schoch) (07/03/87)

In article <762@hao.UCAR.EDU> woods@hao.UCAR.EDU (Greg Woods) writes:
> ... What happens is that uucico times out in "tcpopen". It isn't
...
>I now see TIMEOUT, as follows:
...
>TCP CLOSE called
>woods seismo (6/29-13:35-23579) TIMEOUT (tcpopen)
>woods seismo (6/29-13:35-23579) FAILED (call to seismo )

I fixed this problem on ames, the problem was caused by taking the existing
code for uucp, and splicing the TCP/UUCP code into it.

First, look in aculib/bsdtcp.c in the routine bsdtcpopn.  In that routine
it sets a signal handler for SIGALARM, then calls alarm() before the
connect call.  I see no reason for this, because the TCP code in the BSD
4.3 kernel does a much better job of determining the timeout for TCP than
a user program, so the user program should just let the connect call return
with ETIMEDOUT rather than setting its own timer.

Next, in other parts of the (generic) uucp code, there are several places
where you have "alarm(MAXMSGTIME)" immediately before a read or imsg.  This
makes sense if you are using a modem, as the other side could crash and
leave the carrier on the modem, but this makes no sense when using TCP as
TCP provides its own timeouts.  The way I fixed this problem was to change
all the MAXMSGTIME to a variable, maxmsgtime, which I set to MAXMSGTIME as
a default, but when using TCP, I set to something bigger (like an hour).

If anyone is running the 4.3 BSD uucp with TCP, let me know and I'll mail
you my changes.

BSD