Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!purdue!bu-cs!encore!xylogics!loverso From: loverso@Xylogics.COM (John Robert LoVerso) Newsgroups: comp.sys.encore Subject: Re: tcp support on Umax uucp Summary: coming soon... but you can it have today Message-ID: <1054@xenna.Xylogics.COM> Date: 11 Apr 89 02:01:51 GMT References: <2491@buengc.BU.EDU> Reply-To: loverso@xenna.UUCP (John Robert LoVerso) Organization: Xylogics, Inc., Burlington MA Lines: 111 In article <2491@buengc.BU.EDU> wtm@buengc.BU.EDU (W. Thomas Meier) writes: > Is there any chance that Encore will support TCP any time soon on > its implementation of UUCP? You should probably see it in UMAX4.2 R4.0 (although it might be called UMAX-BSD or UMAX-4.3 by then), which I'm told will be mostly 4.3-Tahoe on the user level ('cept for sendmail & bind, which are to from original ("classic") 4.3 8-{ ). But, there's no need to wait for Encore. 4.3 or 4.3-Tahoe UUCP will work almost directly off the distribution tape. *And* you get to have source 8-}. Here are the changes I needed to get it working: - Umax4.2 R3_2.1 has a kernel bug that forces the granularity of the select timeout to be at least 1 second. This will result in abysmal input performance because UUCP uses select for a sub-second pause to let input data buffer up in the tty driver (so that less read syscalls get used). Since the interval timer *does* work, the fix is a simple change to the packet driver, as below. This bug is fixed in R3_3, I'm told. *** pk1.c_orig Tue Apr 5 14:08:41 1988 --- pk1.c Wed Mar 22 10:16:48 1989 *************** *** 387,393 **** --- 387,406 ---- tv.tv_usec = r % 1000000L; DEBUG(11, "PKCGET stall for %d", tv.tv_sec); DEBUG(11, ".%06d sec\n", tv.tv_usec); + #define BROKEN_SELECT + #ifdef BROKEN_SELECT + /* + * workaround to broken select() in UMAX4.2 R3_2 + */ + { + struct itimerval itv; + timerclear(&itv.it_value); + itv.it_interval = tv; + (void) setitimer(ITIMER_REAL, &itv, (int *)0); + } + #else (void) select (0, (int *)0, (int *)0, (int *)0, &tv); + #endif } } - Umax4.2 has time_t typedef'd as a "u_int". This plays havoc with a number of things, uusnap especially, since it wants to display the retry timeout and does so by subtracking time_t's. At first I thought that uusnap was wrong, but I saw that POSIX has "-1" defined as an error return to a function returning "time_t", so I can only assume that time_t should really be a "long", ala BSD, et al. This patch just corrects uusnap so that it gives sensible output when compiled on UMAX4.2. *** uusnap.c_orig Tue Apr 5 14:26:16 1988 --- uusnap.c Fri Mar 24 12:24:15 1989 *************** *** 52,54 **** register int i, j, nlen = 0; ! time_t curtime, t; --- 52,55 ---- register int i, j, nlen = 0; ! time_t curtime; ! long t; *************** *** 63,65 **** for(i=0; i= ONEDAY*2) ! printf("%ld days ago", (long)-t/ONEDAY); else if (t <= 0) --- 110,112 ---- else if (-t >= ONEDAY*2) ! printf("%ld days ago", -t/ONEDAY); else if (t <= 0) - in tio.c (on 4.3tahoe uucp), is included. This isn't available under UMAX; nor is it needed (as it turns out). (comment out the line). - for UUCP/TCP, you can compile uucpd STANDALONE since UMAX R3.2 doesn't have inetd. But, since you've already used 4.3 UUCP, you can just compile and install inetd. I first did this almost two years ago. BTW, I use this UUCP on our Multimax with two trailblazers, one via rtelnet and one via RDP. -- John Robert LoVerso Xylogics, Inc. 617/272-8140 loverso%Xylogics.COM@Encore.COM Annex Terminal Server Development Group encore!xylogics!loverso [formerly of Encore Computer Corp]