Mercurial > noffle
changeset 192:b9ef99708d1c noffle
[svn] * docs/noffle.conf.5,src/noffle.c: Duh! Do unsubscribing the simple way.
Auto-unsubscribe when the last access time is more than the threshold
number of days behind the time the last article arrived.
author | bears |
---|---|
date | Sun, 21 Oct 2001 12:00:12 +0100 |
parents | 28488e0e3630 |
children | 021d145e34e9 |
files | ChangeLog docs/noffle.conf.5 src/noffle.c |
diffstat | 3 files changed, 26 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Oct 20 14:23:46 2001 +0100 +++ b/ChangeLog Sun Oct 21 12:00:12 2001 +0100 @@ -1,3 +1,9 @@ +Sun Oct 21 2001 Jim Hague <jim.hague@acm.org> + +* docs/noffle.conf.5,src/noffle.c: Duh! Do unsubscribing the simple way. + Auto-unsubscribe when the last access time is more than the threshold + number of days behind the time the last article arrived. + Sat Oct 20 2001 Jim Hague <jim.hague@acm.org> * src/group.h,src/group.c,src/noffle.c,src/server.c: Grp_setLastAccess is
--- a/docs/noffle.conf.5 Sat Oct 20 14:23:46 2001 +0100 +++ b/docs/noffle.conf.5 Sun Oct 21 12:00:12 2001 +0100 @@ -1,5 +1,5 @@ .TH noffle.conf 5 -.\" $Id: noffle.conf.5 300 2001-08-05 08:24:22Z bears $ +.\" $Id: noffle.conf.5 311 2001-10-21 11:00:12Z bears $ .SH NAME noffle.conf \- Configuration file for NOFFLE news server @@ -140,7 +140,8 @@ .TP .B auto-unsubscribe yes|no Automatically remove groups from fetch list if they have not been -accessed for a number days. +accessed for a number days. Groups are only unsubscribed if there +are fresh articles arriving and remaining unread. .br Default: no
--- a/src/noffle.c Sat Oct 20 14:23:46 2001 +0100 +++ b/src/noffle.c Sun Oct 21 12:00:12 2001 +0100 @@ -10,7 +10,7 @@ received for some seconds (to allow multiple clients connect at the same time). - $Id: noffle.c 310 2001-10-20 13:23:46Z bears $ + $Id: noffle.c 311 2001-10-21 11:00:12Z bears $ */ #if HAVE_CONFIG_H @@ -237,7 +237,7 @@ Str grp; Bool autoUnsubscribe; int autoUnsubscribeDays; - time_t now = time( NULL ), maxAge = 0; + time_t maxAge = 0; const char *msgId; autoUnsubscribe = Cfg_autoUnsubscribe(); @@ -267,30 +267,25 @@ else ++cntLeft; } + + /* + * Auto unsubscribe where applicable if last article arrival + * time is maxAge newer than the last access time. This ensures + * the low traffic groups don't get expired simply because + * there's been nothing to read. + */ if ( ! Grp_local( grp ) && Fetchlist_contains( grp ) && autoUnsubscribe - && difftime( now, Grp_lastAccess( grp ) ) > maxAge ) + && difftime( Grp_lastPostTime(grp), + Grp_lastAccess( grp ) ) > maxAge ) { - /* If there have been recent posts, unsubscribe. */ - if ( difftime( now, Grp_lastPostTime( grp ) ) <= maxAge ) - { - Log_ntc( "Auto-unsubscribing from %s after %d " - "days without access", - grp, autoUnsubscribeDays ); - Pseudo_autoUnsubscribed( grp, autoUnsubscribeDays ); - Fetchlist_remove( grp ); - Grp_setRmtNext( grp, GRP_RMT_NEXT_NOT_SUBSCRIBED ); - } - else - { - /* - * Otherwise if no recent posts touch the access. - * This way we don't unsubscribe to low volume groups - * unread only because there are no recent posts. - */ - Grp_setLastAccess( grp ); - } + Log_ntc( "Auto-unsubscribing from %s after %d " + "days without access", + grp, autoUnsubscribeDays ); + Pseudo_autoUnsubscribed( grp, autoUnsubscribeDays ); + Fetchlist_remove( grp ); + Grp_setRmtNext( grp, GRP_RMT_NEXT_NOT_SUBSCRIBED ); } Cont_write(); Grp_setFirstLast( grp, Cont_first(), Cont_last() );