dww@stl.stc.co.uk (David Wright) (04/08/89)
I recently installed nntp for the first time, and made a mistake that is obvious to anyone who 'knows about these things', but wasn't to me at the time. Having initially set up our system with ALONE and FASTFORK, I changed it to use the inetd, but left FASTFORK set. (No, I don't know how I missed the comment in conf.h). All seemed well until I tried testing an existing client host with the new server - all groups were declared illegal! After investigation, I found that the active file is never been read in if you have FASTFORK defined but ALONE undef'd. The investigation would have been easier if the error messages from groups.c had been more explicit - at first I though that the server was not reading commands from the client properly. I understand there will be a new release or patch to nntp soon - here are some suggestions for it: 1 - Include the warning that you cannot set FASTFORK without ALONE in the README as well as in conf.h 2 - In conf.h, #undef FASTFORK if ALONE is not set (as is already done for other parameters which don't work without ALONE). 3 - Edit group.c to give more explicit error messages - the following context diff contains my suggested update. This may help in other cases where the server does not behave as expected too. *** group.c Wed Mar 22 15:43:14 1989 --- group.c.orig Mon Feb 27 16:21:53 1989 *************** *** 1,5 **** #ifndef lint ! static char *sccsid = "@(#)group.c 1.12 (Berkeley) 2/6/88"; #endif #include "common.h" --- 1,5 ---- #ifndef lint ! static char *sccsid = "@(#)group.c 1.11 (Berkeley) 2/6/88"; #endif #include "common.h" *************** *** 37,60 **** } if (index(argv[1], '/') != (char *) NULL) { ! printf("%d Invalid group name %s (bad format)\r\n", ! ERR_NOGROUP, argv[1]); ! #ifdef LOG ! syslog(LOG_ERR, "%s Invalid group name %s (bad format)", ! hostname, argv[1]); ! #endif (void) fflush(stdout); return; } if (find_group(argv[1], num_groups, &low_msg, &high_msg) < 0) { ! printf("%d Invalid group name %s (not in active)\r\n", ! ERR_NOGROUP, argv[1]); ! #ifdef LOG ! syslog(LOG_ERR, ! "%s Invalid group name %s (not in active)", ! hostname, argv[1]); ! #endif (void) fflush(stdout); return; } --- 37,49 ---- } if (index(argv[1], '/') != (char *) NULL) { ! printf("%d Invalid group name.\r\n", ERR_NOGROUP); (void) fflush(stdout); return; } if (find_group(argv[1], num_groups, &low_msg, &high_msg) < 0) { ! printf("%d Invalid group name.\r\n", ERR_NOGROUP); (void) fflush(stdout); return; } ---- Regards, David Wright STL, London Road, Harlow, Essex CM17 9NA, UK dww@stl.stc.co.uk <or> ...uunet!mcvax!ukc!stl!dww <or> PSI%234237100122::DWW Usenet works on the principle that 10,000 people know more about the answer to any question than one does. Unfortunately they know 10,000 different answers.