[net.news.b] Why are distributions mandatory in 2.10.2?

dmmartindale@watcgl.UUCP (Dave Martindale) (11/08/84)

At Waterloo, there are a number of local newsgroups associated with
courses with names like "cs488".  From their names, they appear to be
local groups, but in fact are explicitly distributed by the sys file
on each machine to whatever other machines share the group.  This scheme
worked fine under 2.10.1, but now we find that the 2.10.2 postnews
absolutely insists on assigning a distribution to every article
posted, and that this distribution must be one of the short list in
LIBDIR/distributions.

Since there are several such groups, and since the set of machines that
are interested in the group is different for each group, creating a
separate distribution code for each of these newsgroups seems silly.

I can understand why postnews would want to prevent the user from specifying
a meaningless distribution code, but why must it insist that the user
provide one?  Why not allow the ability to leave out the Distribution
line, having the distribution determined by the newsgroup name?

How does this affect sites who try to receive only specific groups
under control of their sys line on the machine which feeds them news?
As I understand it, if every incoming article has a Distribution line,
then the newsgroup name will be ignored in favour of the Distribution
name in determining where an article is sent.

	Dave Martindale
	{ihnp4,clyde,decvax,allegra}!watmath!dmmartindale

davest@daemon.UUCP (Dave Stewart) (11/14/84)

In article <368@watcgl.UUCP> dmmartindale@watcgl.UUCP (Dave Martindale) writes:
>At Waterloo, there are a number of local newsgroups associated with
>courses with names like "cs488".  From their names, they appear to be
>local groups, but in fact are explicitly distributed by the sys file
>on each machine to whatever other machines share the group.  This scheme
>worked fine under 2.10.1, but now we find that the 2.10.2 postnews
>absolutely insists on assigning a distribution to every article
>posted, and that this distribution must be one of the short list in
>LIBDIR/distributions.
>
>Since there are several such groups, and since the set of machines that
>are interested in the group is different for each group, creating a
>separate distribution code for each of these newsgroups seems silly.

	Firstly, postnews requires a Distribution: line before entering
the editor, but not after.  Thus, you could set up a dummy distribution, 
like "class" to respond to the "distribution" prompt, and then have your
students simply remove the Distribution: header line.

>As I understand it, if every incoming article has a Distribution line,
>then the newsgroup name will be ignored in favour of the Distribution
>name in determining where an article is sent.

	If there is no Distribution: header line, inews goes with the
Newsgroups: line only to determine distribution.  If both header lines
exist, they BOTH must match the sys file line to be sent to that site.
Thus, alternatively, you could set up a distribution for all Waterloo
machines and have your students post to "Newsgroup: cs488" and
"Distribution: wat" or whatever, and it should work just fine.

-- 
David C. Stewart                          uucp:    tektronix!davest
Small Systems Support Group                        tektronix!usenet
Tektronix, Inc.                           phone:   (503) 627-5418

dmmartindale@watcgl.UUCP (Dave Martindale) (11/16/84)

> >At Waterloo, there are a number of local newsgroups associated with
> >courses with names like "cs488".  From their names, they appear to be
> >local groups, but in fact are explicitly distributed by the sys file
> >on each machine to whatever other machines share the group.  This scheme
> >worked fine under 2.10.1, but now we find that the 2.10.2 postnews
> >absolutely insists on assigning a distribution to every article
> >posted, and that this distribution must be one of the short list in
> >LIBDIR/distributions.
> 
> 	Firstly, postnews requires a Distribution: line before entering
> the editor, but not after.  Thus, you could set up a dummy distribution, 
> like "class" to respond to the "distribution" prompt, and then have your
> students simply remove the Distribution: header line.

I know this works; that's what the teaching assistants for the course
have been doing.  And I consider this unacceptable, and it is one of
the reasons I have not installed 2.10.2 on any of the other machines at
Waterloo.  Why should people have to explicitly remember to DELETE the
distribution information?  There should be some way of telling postnews
"leave out the distribution".  My real question was: the ability to
explicitly route newsgroups via the sys file seemed a very useful
feature of all previous versions of news; why should this now be broken?
What reason is there that all articles should now have a Distribution
header, even if the user doesn't wish to apply a non-default distribution?

> 	If there is no Distribution: header line, inews goes with the
> Newsgroups: line only to determine distribution.  If both header lines
> exist, they BOTH must match the sys file line to be sent to that site.
> Thus, alternatively, you could set up a distribution for all Waterloo
> machines and have your students post to "Newsgroup: cs488" and
> "Distribution: wat" or whatever, and it should work just fine.

Hmm.  Has this changed in 2.10.2?  If so, this would work, although it
would be slower ("cs448 is currently distributed immediately, via Ethernet,
to the other machines that receive it, while "wat" material is sent to the
central news machine which distributes via batching).  I know that with
2.10.1, the Distribution line completely replaced the Newsgroup line
for determining where articles were sent.

	Dave Martindale

david@ukma.UUCP (David Herron) (11/19/84)

>From: davest@daemon.UUCP (Dave Stewart)
>Subject: Re: Why are distributions mandatory in 2.10.2?
>Message-ID: <77@daemon.UUCP>
>Date: Wed, 14-Nov-84 12:43:50 EST
>References: <368@watcgl.UUCP>

>In article <368@watcgl.UUCP> dmmartindale@watcgl.UUCP (Dave Martindale) writes:
>>At Waterloo, there are a number of local newsgroups associated with
>>courses with names like "cs488".  From their names, they appear to be
>>local groups, but in fact are explicitly distributed by the sys file
>>on each machine to whatever other machines share the group.  This scheme
>>worked fine under 2.10.1, but now we find that the 2.10.2 postnews
>>absolutely insists on assigning a distribution to every article
>>posted, and that this distribution must be one of the short list in
>>LIBDIR/distributions.
>>
>>Since there are several such groups, and since the set of machines that
>>are interested in the group is different for each group, creating a
>>separate distribution code for each of these newsgroups seems silly.

Couldn't you have a local distribution for ONLY your machines?  That
is something I have been planning to do here if we ever get one of
the local machines connected up.  You put these class newsgroups in
this local distribution, don't send it outside, and everybody will
be happy.
-----------------------------------------
David Herron (University of Kentucky Department of Mathatical Sciences)
Phone:	(606) 257-4244 (phone will be answered as "Vax Lab", usually).
	(606) 254-7820
                         /------- Arpa-Net
	unmvax----\     /
	research   >---/----------------/----------- anlams!ukma!david
	boulder---/                    /
	             decvax!ucbvax ---/   (or cbosgd!hasmed!qusavx!ukma!david)

For arpa-net, anlams has the name ANL-MCS.  (i.e. use "ukma!david"@ANL-MCS).

davest@daemon.UUCP (Dave Stewart) (11/20/84)

[]
	Well, I'm going to have to forget about including what was
said before on this - too much context is confusing things.  If you
need to know what this is about, read the referenced articles.

	Dave, as to your first point: You're quite correct.  Postnews
probably should not demand a distribution.  However, the workaround is
so trivial, (Deleting the line in the editor), that it's not even worth
patching the code in my opinion.  Why require people to enter a
distribution?  Because distributions are a previously under-used feature
that can help limit the news traffic net-wide.  True, it may be over-
compensation, but that's how it goes.  It should not be a hard fix, in any
case.

	As to your second point: Although I have not testing my suggestion,
I believe that it would work.  If you are worried about speed of trans-
mission with the "wat" distribution class, then invent a new one, like
"wat-fast" or "wat-class" that fully interconnects all nodes in the
sub-network that is defined to be sent directly via ethernet; then
post all articles with this distribution class as I suggested.

-- 
David C. Stewart                          uucp:    tektronix!davest
Small Systems Support Group                        tektronix!usenet
Tektronix, Inc.                           phone:   (503) 627-5418

adrian@ru-cs44.UUCP (Adrian Pell) (11/26/84)

I just got bitten by the distribution feature.

For various historical reasons, our sys line at our feed site (ukc)
specified a number of net.* groups explicitly (with the intention of
reducing the phone bill!).  

Consider now what happens to an incoming article to ukc destined for
one of the groups to which we subscribe.  If it doesn't have a Distribution
line, all is well.  If it does have a Distribution line of 'net',
for example, 2.10.1 inews uses this in preference to the newsgroup
name, and WE DON'T GET THE ARTICLE because there's no 'net' entry
in our sys line.

I've had our sys line changed so that we get all net groups now, but
it's a bit of a heavy hammer to solve the problem.  Any suggestions??

-- 
Adrian Pell		({mcvax,edcaad}!ukc!ru-cs44!adrian)
Computer Science Dept.
University of Reading
UK

kre@munnari.OZ (Robert Elz) (12/14/84)

> I just got bitten by the distribution feature.
> 
> For various historical reasons, our sys line at our feed site (ukc)
> specified a number of net.* groups explicitly (with the intention of
> reducing the phone bill!).  
> 
> Consider now what happens to an incoming article to ukc destined for
> one of the groups to which we subscribe.  If it doesn't have a Distribution
> line, all is well.  If it does have a Distribution line of 'net',
> for example, 2.10.1 inews uses this in preference to the newsgroup
> name, and WE DON'T GET THE ARTICLE because there's no 'net' entry
> in our sys line.
> 
> I've had our sys line changed so that we get all net groups now, but
> it's a bit of a heavy hammer to solve the problem.  Any suggestions??
> 
> -- 
> Adrian Pell		({mcvax,edcaad}!ukc!ru-cs44!adrian)
> Computer Science Dept.
> University of Reading
> UK

It too me a while, but I have just realized that Australia has
been suffering from this problem too.  Decvax sends us news,
but only a few groups.  In this case, changing our subscription
so that we get everything is not a viable alternative.

So, here are two patches, one for 2.10.2 to omit distribution
lines when they say nothing new to a 2.10.2 system (that is,
when 2.10.2 would ALWAYS ignore the distribution anyway),
and one for 2.10.1 to make it handle disributions rationally,
as 2.10.2 does.

Please - if you are running 2.10.2 do install this fix, its
very simple, and will not harm anything at all.

If you are running 2.10.1, please install the 2nd fix, but
here you might want to exercise a little caution.  I am no
longer running 2.10.1 so I cannot absolutely promise that
it will work, however I am reasonably sure that it will.

Note: Don't use Larry Wall's patch utility on this article,
it will probably destroy your news system, as only one of
the following patches should be applied.  There's no way
that "patch" can possibly know that!

First, the 2.10.2 patch.  This is to "postnews.c".  The
line numbers won't necessarily correspond, so I've made
this an 8 line context diff.

------------------------------------------------------------- 2.10.2 B news fix
*** postnews.c.was	Thu Sep 20 01:30:48 1984
--- postnews.c	Thu Dec 13 20:41:27 1984
***************
*** 188,203
  				printf("%s\t%s\n", distr[i].abbr, distr[i].descr);
  			continue;
  		}
  
  		/* Check that it's a proper distribution */
  		for (i=0; distr[i].abbr[0]; i++) {
  			if (strncmp(distr[i].abbr, distribution, sizeof(distr[0].abbr)) == 0) {
  				/* Found a match. Do any special rewriting. */
  				if (strcmp(distribution, "world") == 0)
  					strcpy(distribution, "net");
  				return;
  			}
  		}
  
  		printf("Type ? for help.\n");
  	}

--- 188,205 -----
  				printf("%s\t%s\n", distr[i].abbr, distr[i].descr);
  			continue;
  		}
  
  		/* Check that it's a proper distribution */
  		for (i=0; distr[i].abbr[0]; i++) {
  			if (strncmp(distr[i].abbr, distribution, sizeof(distr[0].abbr)) == 0) {
  				/* Found a match. Do any special rewriting. */
+ 				if (strcmp(distribution, def) == 0)
+ 					strcpy(distribution, "");
  				if (strcmp(distribution, "world") == 0)
  					strcpy(distribution, "net");
  				return;
  			}
  		}
  
  		printf("Type ? for help.\n");
  	}
------------------------------------------------------------ end 2.10.2 B fix


Next, here is the fix for 2.10.1, this time to ifuncs.c.  Again the
line numbers are not likely to match, so again I have used 8 line
context diffs ...

Something similar to this would probably also help earlier versions
of B news.  I have no idea about A news (is there really anyone still
running that???)

------------------------------------------------------------ 2.10.1 B news fix
*** ifuncs.c.was	Wed Aug 24 09:14:28 1983
--- ifuncs.c	Thu Dec 13 21:11:38 1984
***************
*** 24,41
  	struct hbuf h;
  #endif
  
  	/* h is a local copy of the header we can scribble on */
  	fp = xfopen(ARTICLE, "r");
  	if (hread(&h, fp, TRUE) == NULL)
  		xerror("Cannot reread article");
  	fclose(fp);
! 	if (h.distribution[0])
! 		strcpy(h.nbuf, h.distribution);
  	ngcat(h.nbuf);
  
  	 /* break path into list of systems. */
  	hptr = nptr = h.path;
  	while (*hptr != '\0') {
  		if (index(NETCHRS, *hptr)) {
  			*hptr++ = '\0';
  			nptr = hptr;

--- 24,41 -----
  	struct hbuf h;
  #endif
  
  	/* h is a local copy of the header we can scribble on */
  	fp = xfopen(ARTICLE, "r");
  	if (hread(&h, fp, TRUE) == NULL)
  		xerror("Cannot reread article");
  	fclose(fp);
! 	if (h.distribution)
! 		ngcat(h.distribution);
  	ngcat(h.nbuf);
  
  	 /* break path into list of systems. */
  	hptr = nptr = h.path;
  	while (*hptr != '\0') {
  		if (index(NETCHRS, *hptr)) {
  			*hptr++ = '\0';
  			nptr = hptr;
***************
*** 52,68
  			continue;
  		hptr = h.path;
  		while (*hptr != '\0') {
  			if (strncmp(srec.s_name, hptr, SNLN) == 0)
  				goto contin;
  			while (*hptr++ != '\0')
  				;
  		}
! 		if (ngmatch(h.nbuf, srec.s_nbuf)) {
  			transmit(&srec, xfopen(ARTICLE, "r"), 1);
  		}
  	contin:;
  	}
  	s_close();
  	unlock();
  }
  

--- 52,71 -----
  			continue;
  		hptr = h.path;
  		while (*hptr != '\0') {
  			if (strncmp(srec.s_name, hptr, SNLN) == 0)
  				goto contin;
  			while (*hptr++ != '\0')
  				;
  		}
! 		if (ngmatch(h.nbuf, srec.s_nbuf) &&
! 		    (h.distribution[0] == '\0' ||
! 		    ngmatch(h.distribution, srec.s_nbuf) ||
! 		    ngmatch(h.nbuf, h.distribution))) {
  			transmit(&srec, xfopen(ARTICLE, "r"), 1);
  		}
  	contin:;
  	}
  	s_close();
  	unlock();
  }
  
--------------------------------------------------------------- end 2.10.1 B fix


Again, please, do insert whichever of these fixes is appropriate for
your site.  For 2.10.2 sites, omitting the fix means that articles
your users post may not get seen by some parts of the net.
For 2.10.1 sites, you may be (unwittingly) failing to forward articles that
other sites have posted, and which should be forwarded.

Robert Elz					decvax!mulga!kre