--- rdist-6.1.5/src/message.c.thestokes 2006-04-19 17:30:39.000000000 -0400 +++ rdist-6.1.5/src/message.c 2006-04-19 17:36:37.000000000 -0400 @@ -793,15 +793,20 @@ char *msg; { static char buf[MSGBUFSIZ]; - - ++nerrs; - - if (isserver) - (void) sprintf(buf, "REMOTE ERROR: %s", msg); - else - (void) sprintf(buf, "LOCAL ERROR: %s", msg); - - _message(MT_FERROR, buf); + /* Don't reenter this function. There is a nasty infinite recursion + case that pops up when msgsndnotify tries to exit. */ + static int inside=0; + + if(inside==0){ + ++nerrs; + inside=1; + + if (isserver) + (void) sprintf(buf, "REMOTE ERROR: %s", msg); + else + (void) sprintf(buf, "LOCAL ERROR: %s", msg); + _message(MT_FERROR, buf); + } exit(nerrs); }