[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