hayes & uucp

Robert_Toxen%anvil.UUCP at harvard.harvard.edu Robert_Toxen%anvil.UUCP at harvard.harvard.edu
Sat Feb 22 14:55:58 AEST 1986


> From: Larry Campbell <campbell%maynard.uucp at BRL.ARPA>
> Subject: Re: Re: hayes & uucp
> > Many thanks to all who responded to the hayes modem <==> uucp problem.
> > Just put the appropriate hayes commands in the L.sys startup string.
> > Larry McVoy
> > Arpa:  mcvoy at rsch.wisc.edu                              
> > Uucp:  {seismo, ihnp4}!uwvax!geowhiz!geophiz!larry      
> Uucico distinguishes between a dial failure and a login failure.
> You can have multiple entries in L.sys for a system, with a
> different phone number in each entry; uucico will dial
> using each one in turn until it gets through, IF it encounters dial
> failures.  But if it encounters a login failure (a failure in the
> expect-send sequence in L.sys) uucico stops right there and won't try
> any subsequent entries for that system in L.sys.
> Larry Campbell                                The Boston Software Works, Inc.
> ARPA: maynard.UUCP:campbell at harvard.ARPA      120 Fulton Street
> UUCP: {harvard,cbosgd}!wjh12!maynard!campbell Boston MA 02109

For those with source code this bug can be fixed by replacing the original
conn() routine in conn.c with this one:

conn(system)
char *system;
{
        register FILE *fsys;
        register int nf, fn;
        int ret;
        int fcode = 0;
        char *flds[50];

        fsys = fopen(SYSFILE, "r");
        ASSERT(fsys != NULL, "CAN'T OPEN", SYSFILE, 0);
			/*
			 * RT: rearranged so that if login fails it will
			 * look for another entry for the node in L.sys and
			 * try it. This allows trying several phone numbers
			 * and even the same one several times in case it
			 * is flakey.
			 */
	for (;;) {
		DEBUG(4, "finds %s\n", "called");
		nf = finds(fsys, system, flds);
		if (nf < 0) {
			fclose(fsys);
			return(fcode ? fcode : nf);
		}
		DEBUG(4, "getto %s\n", "called");
		if ((fn = getto(flds)) <= 0) {
			fcode = CF_DIAL;
			close(fn);	/*  RT */
			continue;
		}
		DEBUG(4, "login %s\n", "called");
		if (login(nf, flds, fn) == FAIL) {
			close(fn);
			sleep(5);
			fn = -1;
			fcode = CF_LOGIN;
			if (lockdev[0]) {
				delock(lockdev);
				lockdev[0] = '\0';
			}
			continue;
		}
		return(fn);
	}
}
-----
Bob Toxen
Stratus Computers
{ucbvax!ihnp4,harvard}!anvil



More information about the Comp.unix.wizards mailing list