[news.software.nntp] nntp server defines and group.c - minor fix needed?

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.