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