crp@ccivax.UUCP (Chuck Privitera) (02/26/85)
I've seen many variations on the HUP protocol for UUCP. e.g. : System V[r2], 4.2BSD, 2.9BSD, others? : ... case HUP: ... if (msg[1] == 'Y') { WMESG(HUP, YES); turn off protocol return; } In a bug report long ago (pre-4.2BSD): ... if (msg[1] == 'Y') { WMESG(HUP, YES); /* * If you look at this code carefully, you'll see that * any site, either master or slave, which receives an * HY always acknowledges with an HY. Therefore, the * actual protocol is: * * MASTER: send H ("I've got no work, how about you?") * SLAVE: send HY ("I'm ready to hang up, how about you?") * MASTER: send HY ("I'm ready to hang up, let's hang up.") * SLAVE: send HY (this is the one that "isn't supposed * to be there") and turn off protocol. * * So the master should wait for the slave's HY before * turning the protocol off on its side. * What should REALLY happen is that only a MASTER * should send out the HY, but changing that here would * not solve the problem of talking to a side which * hasn't fixed this. * It looks like both people doing the turnoff is OK, * in that it will result in an exchange of close * messages and each machine will shut down when the * it gets the CLOSE message from the other machine. */ if (role == MASTER) RMESG(HUP, msg, 1); And finally, the implemenation suggested to be correct in the above comment, i.e. : if (msg[1] == 'Y') { if (role == MASTER) WMESG(HUP, YES); turn off protocol; return; } So which is correct? I'm getting too many: uucp system (2/25-11:09-3289) BAD READ (expected 'H' got FAIL) Thanks in advance for any help on this,