[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [leafnode-list] Fetchnews -P



Yes, that patch appears to have worked.  Thanks for the quick fix.

Jeff

-- 
Jeff Grossman (jeff@xxxxxxxxxxx)

> -----Original Message-----
> From: Matthias Andree [mailto:ma@xxxxxxxxxxxxxxxxxxxxxxxxxxxx]
> Sent: Tuesday, July 15, 2003 4:59 PM
> To: leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [leafnode-list] Fetchnews -P
> 
> Jeff Grossman <jeff@xxxxxxxxxxx> writes:
> 
> > I just removed my main server and tried Fetchnews -P again.  It will
only
> > post articles to the first server mentioned in the config file.  The
> > articles are now deleted from the out.going file because they are
already
> > available upstream.  So, my original main server must have posted them
but
> > do not have them available for reading yet.  So, when I removed my main
> > server, my second server does have them available, so they are not
removed.
> 
> Does this patch fix the problem for you?
> 
> Index: fetchnews.c
> ===============================================================
> ====
> RCS file: /var/CVS/leafnode-2/fetchnews.c,v
> retrieving revision 1.119
> diff -u -r1.119 fetchnews.c
> --- fetchnews.c	14 Jul 2003 10:27:01 -0000	1.119
> +++ fetchnews.c	15 Jul 2003 23:57:48 -0000
> @@ -767,10 +767,10 @@
>  	rc = -1;
>      }
> 
> -    if (log_fsync(tmpfd) || log_close(tmpfd)) {
> -	rc = -1;
> -	goto out;
> -    }
> +    if (log_fsync(tmpfd)) rc = -1;
> +    if (log_close(tmpfd)) rc = -1;
> +    if (rc == -1) goto out;
> +
>      if (store(mastr_str(tmpfn), 0, 0, 1) == 0) {
>  	(void)log_unlink(mastr_str(tmpfn), 0);
>      } else {
> @@ -1754,7 +1754,6 @@
>   * -  0 if no other servers have to be queried (for Message-ID fetch, e.
g.)
>   * -  1 if no errors, but more servers needed (normal return code)
>   * - -1 for non fatal errors (go to next server)
> - * - -2 for fatal errors (do not query any more)
>   */
>  static int
>  do_server(int forceactive)
> @@ -1763,6 +1762,12 @@
>      int rc = -1;	/* assume non fatal errors */
>      int res;
>      int reply;
> +    int flag = 0;
> +    enum flags {
> +	f_mayshort = 1,
> +	f_mustnotshort = 2,
> +	f_error = 4
> +    };
> 
>      /* do not try to connect if we don't want to post here in -P mode */
>      if (action_method == FETCH_POST
> @@ -1798,20 +1803,17 @@
>  	goto out;
>      }
> 
> -    rc = 1;	/* now assume success */
> -
>      check_date(current_server->name);
> 
>      /* post articles */
>      if (action_method & FETCH_POST) {
> +	flag |= f_mustnotshort;
>  	switch(current_server->feedtype) {
>  	    case CPFT_NNTP:
>  		if (reply == 200) {
>  		    res = postarticles(current_server);
>  		    if (res == 0 && rc >= 0)
> -			rc = -1;
> -		    else if (rc == 0)
> -			rc = 1;		/* when posting, query all servers!
*/
> +			flag |= f_error;
>  		}
>  		break;
>  	    case CPFT_NONE:
> @@ -1827,7 +1829,7 @@
>      /* fetch by MID */
>      switch (getmsgidlist(&msgidlist)) {
>      case 0:
> -	rc = 0;
> +	flag |= f_mayshort;
>      default:
>  	;
>      }
> @@ -1837,10 +1839,16 @@
>  	nntpactive(forceactive);	/* get list of newsgroups or new
newsgroups */
>  	res = processupstream(current_server->name, current_server->port,
>  			forceactive);
> -	if (res == 1)
> -	    rc = 1;
> -	else
> -	    rc = -1;
> +	if (res != 1)
> +	    flag |= f_error;
> +    }
> +
> +    if (flag & f_mustnotshort)
> +	flag &= ~f_mayshort;
> +    if (flag & f_error) {
> +	rc = -1;
> +    } else {
> +	rc = flag & f_mayshort ? 0 : 1;
>      }
> 
>  out:
> 
> 
> --
> Matthias Andree
> 
> --
> leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx -- mailing list for leafnode
> To unsubscribe, send mail with "unsubscribe" in the subject to the list

-- 
leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx -- mailing list for leafnode
To unsubscribe, send mail with "unsubscribe" in the subject to the list