honey@down.FUN (Peter Honeyman) (10/24/85)
henry complains about ihnp4 refusing mail "for unknown reasons." prepare to have the unknown made known. one of the advantages of honey danber is the spool directory hashing scheme: a separate directory for each host. a disadvantage is that these directories hang around forever, clogging the spool directory. thus, busy sites like ihnp4 periodically rmdir spool/* to clean up (and thus to speed up). now, if utzoo is talking to ihnp4, and the rmdir daemon happens to catch the utzoo directory when it's empty, subsequent requests to transfer from utzoo to ihnp4 will fail miserably. this is a bug. this happened to me a few months ago -- 10 mail messages were dropped. i was pissed off! off to the source code; what to do, what to do!? i decided that if a request to send a /-free file is denied, then the remote is horribly broken. accordingly, i changed cntrl.c to hang up in those circumstances -- maybe things will be ok later. this worked great -- i even got rick to buy in -- until disaster struck. disaster in the form of honey danber. if i transfer a file, but lose the connection before receiving the acknowledgement, i try again the next time i establish a link. but now, the remote refuses the request -- honey danber won't overwrite an existing work file. gack! -- this meets the criterion above so i hang up, only to try again later. and later. and forever, never sending another damn thing. i queried dan -- "what were we thinking of in refusing to overwrite" -- he indicated that maybe it was an optimization (spare me!). the temptation to remove the refusal from the code is ineffectual, since this bug will live forever somewhere in "the field." there you have it. mea culpa. (you-a too dave, and-a you brian!) back to ihnp4. i keep asking them to stop exposing my bugs, but they just don't listen. for the last time, please stop it! here's a script that removes empty directories in a clean way. (test it first!) peter #!/bin/sh lockdir=/usr/spool/locks cd /usr/spool/uucp locklink=$lockdir/rmdir-daemon echo $$ | awk '{printf("%10d\n", $1)}' > $locklink for i in [a-z]*; do lockfile=$lockdir/`echo LCK..$i|cut -c1-14` ln $locklink $lockfile && rmdir $i rm -f $lockfile done rm -f $locklink exit 0