Mercurial > noffle
view ChangeLog @ 365:33833f23bc13 noffle
[svn] update
author | godisch |
---|---|
date | Sat, 29 Mar 2003 11:15:36 +0000 |
parents | b0ee77fa24d4 |
children | fd66260b3479 |
line wrap: on
line source
Sat Mar 22 2003 Johannes Madel <johannes.madel@gmx.de> * src/post.c,src/configfile.c,src/configfile.h,docs/noffle.conf.5, noffle.conf.example,TODO: Added a config value to specify whether a Reply-To header should be appended to messages posted without it. Also made the new option show up in the noffle.conf manpage and the initial example configuration shipped with the package. Wed Feb 26 2003 Jim Hague <jim.hague@acm.org> * src/client.c,src/group.c: Reunite forbidden group comment with code, and revise forbidden rules to allow single component names except for some specific ones. Fri Feb 21 2003 Jim Hague <jim.hague@acm.org> * src/noffle.c: Give usage (rather than abort()) if option is unrecognised. * src/content.c: Tighten up checks when accessing content vector. Mon Feb 17 2003 Martin Godisch <martin@godisch.de> * src/noffle.c: Added logging when fetching news started/finished. See Debian bug #181320. Thu Feb 13 2003 Jim Hague <jim.hague@acm.org> * src/database.c: Accept articles with no body, substituting a body of a single empty line. Also cast a scanf parameter to remove warning. Wed Feb 12 2003 Jim Hague <jim.hague@acm.org> * NEWS,configure,configure.in,packages/redhat/noffle.spec: Update for 1.1.4. Mon Feb 10 2003 Jim Hague <jim.hague@acm.org> * src/client.c: Fix horror in authentication. Fri Jan 31 2003 Jim Hague <jim.hague@acm.org> * docs/noffle.1: Add 'news admin only' to affected options. * TODO: Add items from Debian wishlist. * src/util.c: Add cast to deal with compiler warning. * NEWS,configure.in,packages/redhat/noffle.spec: Update for 1.1.3. Thu Jan 30 2003 Jim Hague <jim.hague@acm.org> * docs/noffle.1,src/outgoing.c,src/noffle.c: Added -O/--outgoing option to list articles waiting to be posted upstream. Modified Out_next() to return message ID if possible, regardless of whether article text was requested as well. Tue Jan 28 2003 Jim Hague <jim.hague@acm.org> * TODO: Add 'retry lost connections' item. Sun Jan 12 2003 Jim Hague <jim.hague@acm.org> * src/authenticate.c: Extend news admins to all those in group news. Sat Jan 11 2003 Jim Hague <jim.hague@acm.org> * docs/noffle.1,docs/noffle.conf.5: Correct footer date, add new RFCs, update Markus's email again. * docs/noffle.conf.5,src/configfile.c: Only recognise authenticate-client config if authentication of one or other sort is built in. * TODO: Update. Fri Jan 10 2003 Jim Hague <jim.hague@acm.org> * docs/noffle.1: Correct Noffle home page location and add Mirko as author. Also update Markus's email. Debian bug 173743. * AUTHORS. Great maintainer I am, can't even credit myself. * src/fetch.c: Add Reply-To to the front of the list of headers searched for the article author's email when sending posting SNAFU message. Debian bug 156952. * src/configfile.h,src/configfile.c,docs/noffle.conf.5: Add noffle-user and noffle-group configs. * src/configfile.c,src/fetch.c,src/fetchlist.c,src/protocol.c, src/server.c: Replace strcpy() with Utl_cpyStr() where appropriate. See Debian bug 168128. * src/client.c. Replace strcpy() here too. * src/control.c,src/configfile.c,src/noffle.c: Replace [s]scanf("%s") with [s]scanf(MAXCHAR_FMT). * Makefile.am: Install executable owner news.news mode 06755. Install sample noffle.conf as 0640 news.news. * src/noffle.c: Log warning if noffle.conf is world readable. * src/noffle.c: Restrict most options to news admins; i.e. those who are root or news on running Noffle. * src/configfile.c: Change snprintf() to Utl_cpyStr(); * Makefile.in,acconfig.h,aclocal.m4,config.h.in,configure,configure.in, docs/Makefile.in,docs/noffle.conf.5,packages/Makefile.in, packages/redhat/Makefile.in,src/Makefile.am,src/Makefile.in, src/authenticate.c,src/authenticate.h,src/noffle.c,src/server.c: Add basic authentication using either Noffle-specific user file or authenticating via PAM (service 'noffle'). PAM authentication needs to run as root, so a Noffle server that needs PAM must be started by root. Helpful (?) error messages will be logged if not. Noffle will switch ruid and euid to 'news' (or whatever is configured) ASAP. * src/noffle.c: Add uid checking. * src/noffle.c: Set umask(022) on startup. Mon Jan 6 2003 Jim Hague <jim.hague@acm.org> * src/database.c,src/post.c,src/protocol.h,src/protocol.c: When posting, check the article for those headers that are specified in section 5 of the IETF draft and ensure they only occur once. * src/post.c: Clean up a conditional. Fri Dec 27 2002 Jim Hague <jim.hague@acm.org> * src/log.c,src/log.h: Add Log_fatal() for reporting fatal errors and exiting, Log_gdbm_fatal() for the the same but specifically as a GDBM error reporting function, and a new log debug level AUTH for a forthcoming authentication mechanism. * src/database.c,src/group.c: Provide new gdbm error function to all gdbm opens. * src/noffle.c: Add atexit() to always close databases on a program- inspired exit. * src/content.c,src/dynamicstring.c,src/fetchlist.c,src/filter.c, src/itemlist.c,src/log.c,src/log.h,src/over.c,src/protocol.h, src/request.c,src/util.c: Use Log_fatal where appropriate. Tue Dec 24 2002 Jim Hague <jim.hague@acm.org> * src/client.c: doGetGrps() was supposed to fall back to "LIST" if "LIST ACTIVE" wasn't recognised. However, it would only do this if a group pattern was given, which was downright wrong. Now fixed. Sun Nov 17 2002 Jim Hague <jim.hague@acm.org> * src/util.c: localTimeDiff() cached its value and recalculated it every hour of clock time, regardless of the time the calculated was based on. This is potentially dangerous at daylight saving changes. So instead use the cached last result only when the new request is to be based on a time in the same hour as the cached result. * src/util.c: Replace the alternate Utl_mktimeGMT() implementation used when timegm() is not available. The previous version, as suggested by the glibc timegm() man page, used setenv() and unsetenv() for changing the environment. These aren't POSIX functions, and the POSIX putenv() (a) is tricky to manage if the same var is being constantly update and memory isn't to leak, and (b) provides no way to remove an environment entry. So change to an implementation Wget uses. This should compile on not glibc systems - the previous version failed to build on Solaris. Sun Nov 10 2002 Jim Hague <jim.hague@acm.org> * src/client.c,src/fetch.c,src/lock.c.src/protocol.c,src/util.h,src/util.c: Define our own SignalHandler type rather than use the rather Linux-specific (and potentially glibc version specific) sig_t. * src/client.c,src/database.h,src/database.c,src/over.h,src/over.c, src/pseudo.c,src/server.c: Ensure format string specifiers and passed data types match. As part of this, change some uses of size_t as a general data type to an appropriate base C type. Database status changes from int to unsigned. * src/noffle.c: Rearrange initialisation so that a requested usage message will be output before Noffle can fail due to misconfiguration. Introduce routine (currently stub) for checking file ownership and permissions on startup - I suspect a lot of reported errors are due to ownership problems. * configure.in: Remove '-ansi' and '-Wtraditional'. We use functions that aren't strict ANSI, and I'm not interested in warnings about usage differences between ANSI and K&R. * Makefile.in,aclocal.m4,config.h.in,configure,src/Makefile.in: Regenerate after configure.in change. With all the above in, we now compile cleanly on Cygwin with GCC 3.2, except for a warning about printing a time_t with a %ld format. This will serve as a reminder that we assume time_t is the same size as a long. * src/configfile.c: #include <regex.h> requires sys/types.h be included first. * src/fetch.c,src/log.c: Make 'fetch' and 'log' variables static; they're not used outside their respective modules and cause a name clash on MacOS X. * configure.in: Add optional GDBM include and lib directory specifiers. Tue Oct 25 2002 Jim Hague <jim.hague@acm.org> * src/server.c: Fix post 1.0 bug where the article cursor was lost if the server yielded the lock to another server. Tue Oct 8 2002 Jim Hague <jim.hague@acm.org> * src/client.c: Fix old bug in readField() where the last field in a line would not terminate the buffer properly if the line ended with \0. This could in practice lead to rubbish in the Lines: field, with extra numerals from the preceding Bytes: field being added. Mon Aug 5 2002 Jim Hague <jim.hague@acm.org> * INSTALL,README,docs/FAQ: Remove online mode from introductory documentation. It causes confusion. Add it to FAQ list. * configure, configure.in: Correct --enable-debug handling. Don't add -DDEBUG flag to the build line on non-debug builds. * docs/noffle.lsm: Update * src/group.c: Explicitly disallow zero-length group names. Yes, I found one. * src/server.c: Correctly implement LISTGROUP when the optional group name parameter is omitted. Thu Jul 4 2002 Jim Hague <jim.hague@acm.org> * docs/NOTES: Add note on Slypheed. * aclocal.m4: aclocal upgrade. Wed Jun 26 2002 Jim Hague <jim.hague@acm.org> * Makefile.in,docs/Makefile.in,packages/Makefile.in, packages/redhat/Makefile.in,src/Makefile.in: automake upgrade. * src/database.c: DB_compact() now does nothing. It was calling gdbm_reorganize() which did rebuild on the database, copying it to a new database and renaming. This now has an explicit function, Db_rebuild(), and you don't want to chew disc space like this during a routine expire. * config.h.in,configure,configure.in: Check for timegm(). * src/server.c,src/util.c,src/util.h: Recognise GMT/UTC on NNTP NEWGROUPS. Do small reorg of some of the timezone sensitive code, and introduce use of timegm(). An implementation is provided for systems without timegm(). Wed Jun 26 2002 Jim Hague <jim.hague@acm.org> * aclocal.m4: New aclocal version. * Makefile.in,docs/Makefile.in: Update to reflect last changes to Makefile.am(s). Oops. * configure,configure.in: Add -DDEBUG to build lines when configured with enable-debug. * docs/noffle.1,src/Makefile.am,src/Makefile.in,src/content.c, src/content.h,src/database.c,src/database.h,src/expire.c, src/expire.h,src/noffle.c: Split out expire code from database.c, change to remove articles in place (rather than rebuild article database) and add separate command to rebuild article database from articles listed in overviews. This may help if the article database gets corrupted. * src/protocol.c: Change strcpy to Utl_strcpy and replace ascii check with isascii(). Wed Jun 5 2002 Mirko Liß <mirko.liss@web.de> * src/group.c,src/client.c,src/noffle.c: rename Grp_isValidGroupname to Grp_isValidName; create Grp_isForbiddenName(); delete client.c:isForbiddenGroupName(). I should be have done it the right way from the beginning. * src/protocol.c:Prt_getLn(): Skip line if connection to server lost before end of line. Prt_getLn() used to return incomplete lines. * src/common.h,src/client.c: Replace sscanf() format "%s" by MAXCHAR_FMT. * src/client.c: Get each line of grouplist in processGrps(), don't collect the whole list beforehand. Tue May 14 2002 Mirko Liß <mirko.liss@web.de> * src/configfile.c,src/filter.c,src/filter.h,src/fetch.c,src/noffle.c, noffle.conf.example,docs/noffle.conf.5: Added new filter rules 'reference=regex', 'older=lastupdate-3', 'date=invalid', 'newer=now+1.5'. * src/group.c:Grp_isValidGroupName(): discard the groups 'poster', 'junk', and the hierarchies 'to', 'control', 'ctl','example', '+', '-'. * src/protocol.c: Allow hostname=%name@dom.ain to generate MsgIds like <localpart%name@dom.ain>. The '@' sign will only be added if there's no '@' present in the hostname. * src/protocol.c:Prt_genFromHdr(): Replace the oldfashioned From:-Header content 'pwname@domain (Name)' by '"Name" <pwname@domain>'. * src/request.c:storeMsgId(): check of realloc() result added. Tue Mar 26 2002 Mirko Liß <mirko.liss@web.de> * src/database.c,src/protocol.c,src/post.c: Handle header line folding in postings and database. Noffle 1.0.1 doesn't understand folded headers and reports: "Entry in database '<msgid>' is corrupt (anything)". Fri Mar 15 2002 Jim Hague <jim.hague@acm.org> * src/database.c,src/protocol.c,src/util.c,src/util.h: The latest IETF article format draft draft-ietf-usefor-article-06.txt recommends that Xref: references contain the FQDN of the server. We were using the host name without the domain. So split the routine used for obtaining the FQDN from protocol.c into util.c, and use it when adding Xrefs. * src/group.c: Make comparison against NULL explicit in an if containing an assignment, as I'm sad enough to think it is safer if it is obvious that the assignment is meant to be there. * Makefile.am,docs/Makefile.am,packages/redhat/noffle.spec, packages/redhat/noffle-xinetd: Update RPM spec file for RH7.2. Fix up 'make install' to work properly with 'make install DESTDIR=nnnn' to enable 'make install' use in spec file. Convert from inetd to xinetd. * aclocal.m4,configure.in,configure: Bump version to 1.1.2 & re-run aclocal/autoconf. * NEWS: Updates for 1.1.2. Wed Mar 13 2002 Mirko Liß <mirko.liss@web.de> * src/server.c: While in online mode, new fetched articles returned the old headers from the overview. Spotted by Mardy. Tue Feb 26 2002 Jim Hague <jim.hague@acm.org> * src/client.c: That wasn't a memory leak fixed on Feb 8th. That was a cockup cause by my forgetting that Cont_app takes ownership of an overview. Revert it and add comment to Cont_app. Spotted with the aid of valgrind. * src/post.c,src/pseudo.c * src/util.c: Fix out of bounds write bug spotted by valgrind. * src/database.c: Fix minor memory leak spotted by valgrind. Valgrind is at http://devel-home.kde.org/~sewardj/. Thu Feb 14 2002 Jim Hague <jim.hague@acm.org> * src/over.c: Fix warning. * src/fetchlist.h,src/fetchlist.c,src/noffle.c: Provide fetchmode for groups on fetchlist. * src/server.c: When fetching overviews online from groups on the fetchlist, fetch them in the appropriate fetch mode for the group. E.g. if group mode is FULL, fetch overviews and put all articles on articles required list to be fetched on the next noffle --fetch. * packages/redhat/noffle.spec: Incorporate changes from Carles Arjona. Fri Feb 8 2002 Jim Hague <jim.hague@acm.org> * docs/noffle.conf.5: Correct typo in From: filter description. * src/client.c: Fix memory leak in filter code. * src/fetchlist.c: Write fetchlist to new file and update if written correctly. Stops fetchlist being trashed on disc full. Also add fetchlist dirty flag to save unnecessary rewrites. Wed Dec 19 2001 Mirko Liß <mirko.liss@web.de> * src/over.c: Convert tabs to spaces to prevent corruption of overview files (see rfc2980 chapter 2.8). Tue Dec 18 2001 Mirko Liß <mirko.liss@web.de> * src/group.c,src/group.h,src/noffle.c,src/client.c: Add Grp_isValidGroupName to prevent noffle -C ../fetchlist; noffle -D ../fetchlist and similar dirty stuff. * src/content.c: Fixed expiration of temporary filenames in overview. Sorry. Sun Dec 9 2001 Jim Hague <jim.hague@acm.org> * docs/Makefile.in: Add testing.txt to documents. * NEWS: Updates for 1.1.1 release. * configure.in: Change version to 1.1.1. Additional decoration to the version is slowing down my release and RPM building. All Makefile.in have been regenerated as has configure. * packages/redhat/noffle.spec: Change version to 1.1.1. * packages/.cvsignore,packages/Makefile.am,packages/redhat/.cvsignore, packages/redhat/Makefile.am: Add sufficient makefiles for noffle.spec and noffle-expire to the included in the tarball generated by 'make dist'. Sun Dec 9 2001 Jim Hague <jim.hague@acm.org> * src/util.c: Improve (correct) error detection when updating timestamp file. * src/content.h, src/content.c: Return Boolean success/fail from Cont_write. Also ensure cont.first isn't polluted in the event of a failed update. * src/client.c,src/control.c,src/fetch.c,src/noffle.c,src/post.c, src/pseudo.c: If Cont_write fails, don't do subsequent actions that rely on it having worked. Typically this will be updating the first/last article nos in the group database. * src/post.c: Gather article initialisation into one place for clarity. * src/server.c: If groupinfo.lastupdate is unreadable or corrupt, spot this and report it and give an explicit error when processing NNTP NEWGROUPS command. Sun Dec 9 2001 Jim Hague <jim.hague@acm.org> * src/post.c: Always replace message ID in posted message if existing message ID fails Prt_isValidMsgId. * noffle.conf.example,docs/noffle.conf.5,src/configfile.c: Change replace-messageid default from 'yes' to 'no'. These days bad message IDs from newsreaders shouldn't happen (or should be more easily fixable from the newsreader config), and replacing message IDs causes havoc if you're gatewaying mailing lists or similar. Sun Dec 2 2001 Mirko Liß <mirko.liss@web.de> * src/protocol.c: Use pid and count to generate MsgIDs, not random number. Thu Nov 29 2001 Jim Hague <jim.hague@acm.org> * src/content.c: Remove spurious temporary files and add a closedir() to terminate opendir()/readdir() sequence properly. * Updated NEWS ready for 1.1.1. Thu Nov 22 2001 Jim Hague <jim.hague@acm.org> * Makefile.in,aclocal.m4,config.h.in,configure,configure.in docs/Makefile.in,src/Makefile.in: Regularise format of Noffle default parameters in configure.in and regenerate. * src/content.c,src/noffle.c: Correct bugfix in Conf_write(). Remove temporary file expiry, but skip temp files in Cont_nextGrp(). Thu Nov 22 2001 Mirko Liß <mirko.liss@web.de> * src/noffle.c: expireContents() expires overview temporary files. * src/content.c: minor bugfix in Conf_write() * docs/noffle.conf.5,src/configfile.c,src/filter.[ch]: Added filter post-status=mod|yes|no. Only the current group will be checked. * src/client.c: Bugfix at processGrps(). Local groups are now always preferential. They won't change to an upstream server. Wed Nov 14 2001 Mirko Liß <mirko.liss@web.de> * src/noffle.c,docs/noffle.1: added optional pattern to select previously configured upstream server with 'noffle --fetch' and 'noffle --query'. Tue Nov 6 2001 Jim Hague <jim.hague@acm.org> * TODO: Update the TODO list. * src/util.c: When updating timestamp files, write new stamp to temp file and rename, so failure with e.g. full disc doesn't leave an empty stamp file. Sun Nov 11 2001 Mirko Liß <mirko.liss@web.de> * src.util.c: Minor fix at Utl_parseNewsDate(); fixed SIGSEGV at Utl_getHeaderLn(). Header size limit still much too low. * docs/testing.txt: How to set up a testbench for noffle. Useless for most developers, but useful for beginners. Thu Nov 8 2001 Mirko Liß <mirko.liss@web.de> * Makefile.am,Makefile.in: Minor fix I haven't previously included. The new --with-configfile option depends on it. * docs/NOTES: Minor enhancement to slrn-script. Now it marks incomplete articles as unread. Tue Nov 6 2001 Jim Hague <jim.hague@acm.org> * packages/redhat/noffle.spec: Update to version to 1.1-1 and fix up some items causing RPM3 vs RPM4 problems. * configure,configure.in: Bump version to 1.1.1-unstable-develop, and add --with-spooldir and --with-configfile options (idea due to Mirko Liss). Wed Oct 31 2001 Jim Hague <jim.hague@acm.org> * AUTHORS,INSTALL,NEWS,README,TODO,docs/NOTES,src/client.c,src/protocol.c, src/protocol.h,src/server.c: Merge with latest 1.0 branch. I do not intend to do any further merges from the 1.0 branch; future changes to 1.0 should be carried over by hand if necessary. * src/configfile.c,src/content.c,src/control.c,src/database.c, src/dynamicstring.c,src/fetch.c,src/filter.c,src/group.c, src/itemlist.c,src/lock.c,src/outgoing.c,src/over.c,src/post.c, src/pseudo.c,src/request.c,src/util.c: Minor includes rearrangement. Tue Oct 30 2001 Jim Hague <jim.hague@acm.org> * src/content.c: When generating temp file to write new content to, make sure there is no possibility of a name clash with an existing file. Bug spotted by Mirko Liss. Tue Oct 30 2001 Jim Hague <jim.hague@acm.org> * noffle.conf.example,docs/noffle.conf.5,src/configfile.h,src/configfile.c, src/protocol.c: Add new config item 'hostname' to specify the part after the @ in message IDs generated by Noffle. Patch submitted by Mirko Liss. Tue Oct 30 2001 Jim Hague <jim.hague@acm.org> * docs/noffle.conf.5,src/configfile.c,src/filter.h,src/filter.c: Contrary to the documentation, the action of a filter if not specified was 'full'. Add a new 'default' action which makes the action that of the group's subscription mode. Make this the default action, and allow 'default' to be specified explicitly as the action in the filter definition. Adapted from patch submitted by Mirko Liss. Thanks, Mirko. * docs/noffle.conf.5: Correct small typo. Mon Oct 22 2001 Jim Hague <jim.hague@acm.org> * src/fetch.c: Only leave articles in the requested list if the error fetching them was fatal. Otherwise article requests will accumulate indefinitely (e.g retrieving through NNTPcache when it can't find the body of an article, now or event. Yes, this happened to me; I had nearly 2000 requests backed up and never being cleared). * src/group.c: The weekend's change introduced code that causes a bus error on Sparc ( *(time_t *)p = xxx ). Replace with a safe memcpy, and also use memcpy when reading the Entry and time items to remove warnings on Sparc compilation. 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 only ever called with last param as time(NULL), so remove it and call time() inside the implementation of Grp_setLastAccess. * src/client.c,src/group.h,src/group.c,src/noffle.c,src/post.c: Groups are automatically unsubscribed when the last access to the group is older than a particular threshold. However, for very low traffic groups, the last access may exceed the threshold simply because there has been no new article posted. In this case, rather than unsubscribe, update the group last access time. This means that groups are now only unsubscribed if the last access exceeds the threshold AND articles have arrived in the group since. Add Grp_setLastPostTime() to track the last time an article arrived in the group. Fri Oct 05 2001 Markus Enzenberger <me@markus-enzenberger.de> * src/configfile.c: fix bug with missing initialization of user name and passwd Wed Sep 12 2001 Jim Hague <jim.hague@acm.org> * src/client.c,src/client.h,src/fetch.c,src/noffle.c,src/server.c: robustness - instead of returning simple Passed/Failed statuses from connection functions, return an integer status instead. This allows Noffle to distinguish between a connection failure, an unrecoverable protocol error and a recoverable problem. As a concrete instance, Noffle will no longer abort the connection if a group is removed from the upstream server. Also beef up error detection a bit. * src/content.c: instead of overwriting the existing content file(s) when updating - which leaves a window where Noffle is vulnerable to failure which will leave the content file corrupted (yes, it happened to me), write a new content file and rename it over the old file only when it has been written and closed with no errors reported. Sat Sep 01 2001 Markus Enzenberger <me@markus-enzenberger.de> * src/client.c,src/protocol.h: perform authentication at connect time, accept new and deprecated authentication status codes. Sun Aug 5 2001 Jim Hague <jim.hague@acm.org> * src/client.c: Change variable only used on constant to 'const'. * src/filter.c: Add a couple of 'return's after ASSERT() to remove compiler warnings about functions needing returns. * NEWS,TODO,configure,configure.in,noffle.conf.example,docs/NOTES, docs/noffle.conf.5,src/client.c,src/configfile.c,src/content.c, src/control.c,src/database.c,src/fetch.c,src/fetchlist.c,src/filter.c, src/group.c,src/lock.c,src/log.c,src/log.h,src/noffle.c,src/outgoing.c, src/post.c,src/protocol.c,src/request.c,src/server.c,src/util.c: Debug logging is always compiled and selected via noffle.conf. All debug logs are classified as all, none, config, control, expire, fetch, filter, newsbase, noffle, post, protocol, requests and server. * src/util.c: Remove case sensitivity in date parsing. Tue May 15 2001 Jim Hague <jim.hague@acm.org> * src/client.c: Only bail out of fetching multiple articles if the connection fails. If we do get a status from the upstream server note it and see what is reported for the next article. Otherwise failure to retrieve one article will cause all successive article fetches to fail even through they would succeed if tried. * src/lock.c: Fix assert in lazy locking. If another noffle signalled us to release the lock at the next close, and then repeats the signal so that it arrives during LOCK_closeDatabases, the signal handler was trying to close the databases again. Thu May 10 2001 Jim Hague <jim.hague@acm.org> * src/client.c: Only return failure getting NEWGROUPS if the connection failed. If the server doesn't implement NEWGROUPS correctly (step forward elderly versions of NNTPcache) it isn't fatal to the fetch process. You can still do a 'noffle --query groups' to update your newsgroup list. * src/server.c: Correct error code given when article requested by message ID is not found. Previously the code given (423) was the same as for when an article requested by its number in a group was not found. The docs (and various NNTP servers) say 430 should be returned. Thanks to Alberto Mardegan <amardegan@iol.it> for spotting that. Wed May 9 2001 Jim Hague <jim.hague@acm.org> * TODO,src/client.c,src/client.h,src/fetch.c,src/fetch.h,src/noffle.c: Improve error checking during fetches. A fetch is now aborted immediately if the connection times out or if an unexpected response arrives. This should fix problems with articles appearing in the wrong group, and possibly other mysterious happenings. Tue May 8 2001 Jim Hague <jim.hague@acm.org> * src/post.c: If post-locally is set, only do immediate local posting on groups with status 'y'. We don't want to post locally articles destined for the moderator of a moderated group. Tue May 01 2001 Markus Enzenberger <me@markus-enzenberger.de> * src/server.c: do not search all groups if group does not exist and contains no wildcards * AUTHORS: update my email address * configure.in,configure: changed version to 1.1-unstable-develop Tue Mar 13 2001 Markus Enzenberger <me@markus-enzenberger.de> * src/client.c: Fix bug. Server name was not yet initialized if server required authentication at connect time. Wed Feb 28 2001 Markus Enzenberger <me@markus-enzenberger.de> * src/database.c: fix missing argument to snprintf Sun Feb 26 2001 Matija Nalis <mnalis-sf@voyager.hr> * fix for small glitches in options parting in src/noffle.c Sun Feb 25 2001 Jim Hague <jim.hague@acm.org> * TODO,content.c,lock.c,server.c,server.h: Remove bug notice re: need to do a Cont_write on Lock_closeDatabases in case of unwritten content changes when releasing the lock. Update content to keep dirty flag and avoid unnecessary writes, and lock to signal server to re-read its group content info after the lock is released. Do NOT write content info on Lock_close if dirty, as the placeholder article in unsubscribed groups is currently done by adding it to the content when joining the group and deliberately not saving it unless another content modification takes place and thus causes the content to be saved. Thu Jan 25 2001 Jim Hague <jim.hague@acm.org> * src/client.c,src/protocol.c,src/util.h,src/util.c: Common up repeated signal handler setting code into Utl_installSignalHandler. * src/client.c: Ensure Client_retrieveArt always exits with the global lock held. Previously it would be held on error, not held if OK. * src/lock.h,src/lock.c,src/noffle.c: Add lazy lock release. Only release the lock and close the databases if (a) another process signals us SIGUSR1 indicating it wants the lock, or (b) it is explicitly requested by a call to new function Lock_syncDatabases(). When waiting for the lock, SIGUSR1 the holding process every second. This is all an attempt to minimise the number of times we need to close and open the database. When (ha!) the database is replaced by something that can handle multiple simultaneous writers (with appropriate locking) this won't be necessary. Fri Dec 29 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/server.c: apply bug-fix for lazy group loading by Matija Nalis * TODO: Add handling of connection breakdown during a fetch to later section. Fri Dec 22 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * AUTHORS: add Matija Nalis Sun Dec 10 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/client.c: Extract common code from putCmd and putCmdNoFlush, reset client.lastStat when sending new command Tue Dec 05 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/fetch.c,src/Makefile.in: use sendmail instead of mail * src/fetch.c,src/pseudo.c,src/pseudo.h,src/server.c: applied patch from Matija Nalis: better handling of inconsistent counters at remote server; do not read overview on each group command Thu Oct 26 21:42:45 BST 2000 Jim Hague <jim.hague@acm.org> * src/protocol.c: Fix bug in Prt_getLn if we should read a line starting with '\0' - according to the leafnode mailing list, this has been seen in the wild. * docs/inews.1,docs/noffle.1,docs/noffle.conf.5, packages/redhat/noffle.spec,src/configfile.h,src/configfile.c, src/noffle.c,src/post.h,src/post.c: Removed use of getopt_long, and added inews mode - the Noffle executable behaves as inews if invoked as inews. This includes adding From: and Organization: headers if necessary - add configs to override defaults for the From: domain and specify the organization. For all my fellow trn-heads out there, and users of any other ageing newsreader that expects inews. Updated RPM spec to create inews link to noffle on install. * src/server.c: When replying to a command, generate the reply into a buffer, release the lock and then send the reply, so we don't hog the lock should the reply stall for some network reason. Sun Oct 15 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * acconfig.h,config.h.in,configure.in,src/Makefile.in,src/fetch.c: Applied patch by Paul Slootman: using the mail program is replaced by sendmail (SENDMAILPROG variable). Sun Sep 10 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * docs/NOTES: Added section about Gravity (thanks to Tomislav Filipcic <tfilip@jagor.srce.hr>). Sun Sep 10 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/Makefile.am: Added filter.c, filter.h * src/fetch.c: Fixed a bug in Fetch_init, that triggered an assertion if connection to remote server failed. Sat Sep 02 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * NEWS,src/client.c,src/protocol.c,src/protocol.h,src/server.c: Added timeout to Prt_getLn to avoid Noffle hanging if the connection breaks down during a fetch. Wed Aug 23 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/post.c: do no longer always replace invalid message-IDs. Wed Aug 16 00:03:50 BST 2000 Jim Hague <jim.hague@acm.org> * Permit 'k' and 'm' suffices after numbers in filter rules. Fri Aug 11 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/noffle.c: Minor bug fix. Noffle no longer tries to unsubscribe groups that are already unsubscribed. Wed Aug 9 22:02:21 BST 2000 Jim Hague <jim.hague@acm.org> * src/client.c: Use plain LIST instead of LIST ACTIVE if possible for compatability with old servers. * src/client.c,src/fetch.c: Fix fetching bugs that could potentially have left the lock in the wrong state. * docs/noffle.conf.5,src/Makefile.in,src/client.c,src/configfile.c, noffle.conf.example: Add first-cut article filtering. Note you will need to run 'configure' again to re-generate src/Makefile. Wed Jul 26 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * Released version 1.0pre7 Tue Jul 25 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/client.c: Added GMT to NEWGROUPS command. Mon 24 Jul 20:30:05 BST 2000 Jim Hague <jim.hague@acm.org> * src/database.h,src/database.c,src/server.c: Redo XHDR and XPAT to handle 'XHDR <msgid>' and 'XPAT <msgid>'. Common up code shared by XHDR and XPAT. * src/server.c,packages/redhat/noffle.spec: Remove pipe through sort(1) in printGroups() and dependency on textutil(RedHat)/ textutils(SuSE) packages in RPM. The RPM now works on RedHat and derivatives and SuSE. * src/server.c: Release lock while collecting POST article and while reporting XOVER x-y results. * src/server.c: Update group 'last accessed' timestamp when XOVER read. This for smooth working with 'trn' and other newsreaders that only read the XOVER unless an article read. I have newsgroups I want to scan but only infrequently read an article - I don't want them getting unsubscribed. * src/server.c: Change server read timeout to 2 secs, release the lock if we'v held it for 2 secs so we don't starve anybody else, and if reading a command when we don't hold the lock don't use timeout. * src/util.c: Fix Utl_newsDate and Utl_parseNewsDateto work properly in all timezones. * src/lock.h,src/lock.c,src/noffle.c: Add 'fetch' lock to main lock, add Lock_gotLock() so we can test the main lock state (currently used only in ASSERTs). Fetch lock can be obtained WAIT or NOWAIT - latter fails immediately if lock not available. * src/client.c,src/fetch.c,src/noffle.c: Change lock handling during a fetch. Begin by obtaining 'fetch' lock - if busy, exit fetch immediately with error message. Then during fetch release the lock except when processing received data; in cases when incoming data is multi-line, collect all data first and then process. The aim is to ensure the lock isn't held with a network operation is in progress. I may carry on and extend this to all server operations as well (so a slow client can't hog the lock). * docs/noffle.conf.5,src/configfile.h,src/configfile.c,src/post.c, src/protocol.h,src/protocol.c: Add Path: header to newly posted articles. Provide default content - path-header in config overrides. Sat Jul 22 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * doc/NOTES: Removed section about GNUS hanging. It was caused by the "select" bug in Noffle. Sat Jul 22 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/server.c, src/protocol.c: Fixed a critical bug. "select" cannot be used with buffered stdio. This caused Noffle to hang with some readers (like tin). Sat Jul 22 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * request.c: Applied patch from M.Nalis: Modify Req_add() to append to requested/news.serv.er file each MsgID (and do not clean dirty flag, because otherwise writeRequestfile() would nuke us when overwriting file!). Wed Jul 19 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * Applied patch from M.Nalis for fixing a small problem with the printed counters while fetching articles. Wed Jul 19 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * Do not acquire global lock for printing help Mon Jul 17 11:19:06 BST 2000 Jim Hague <jim.hague@acm.org> * src/client.h,src/client.c,src/noffle.c,docs/noffle.1: Remove '--query times' option. Creation time should always be time of creation on local server. * src/group.h,src/group.c: Remove Grp_setCreated(). Fri Jul 14 2000 Matija Nalis <mnalis-sf@voyager.hr> * Added counter for --fetch so one can see how much it is until the end of the transfer. Fri Jul 14 15:20:14 BST 2000 Jim Hague <jim.hague@acm.org> * src/client.c,src/fetch.c,src/noffle.c: The groupinfo.lastupdate file was being used to (a) indicate the time of the last addition to group information, and (b) the last access to a server. With more than one server specified, (a) meant the groupinfo.lastupdate file was updated when new groups on the server (or a new fetch of the server group list) were processed. When server 2 came to use the file for (b) (to determine the time to specify when sending the NEWGROUPS command), the time was already set by server 1 and so server 2 would not see new groups. Fix this by creating lastupdate.<server> files for use (b). * src/client.c,src/group.c: Set initial group creation time to the current time. Previously it was set to 0, so new groups were not reported to a NEWGROUPS request unless 'noffle --query times' was run - even then, local groups would never be reported. Setting the creation time to the creation time on the local server makes things work properly. NB - the group creation time should always be reported as the creation time on the server; must fix this and remove '--query times'. This change will require 'noffle --query groups' to be re-run to create the server lastupdate.<server> files. Mon Jul 03 12:05:50 BST 2000 Jim Hague <jim.hague@acm.org> * src/database.h,src/database.c,src/server.c: Fix 'XHDR <msgId>' and add 'XPAT <msgId>'. 'XHDR <msgId>' previously only worked if msgId was a message in the current group. My brain was really in neutral when I did that. Fri Jun 30 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/server.c: Leave online mode, if the connection to a remote server fails for avoiding a series of timeouts and holding the lock for a long time. Sun Jun 25 09:45:50 BST 2000 Jim Hague <jim.hague@acm.org> * src/protocol.c: Another go at Prt_genMsgId. Yesterday I seeded the random element of the generated message id from the time; but what if two Noffle processes start in the same second? So switch to seeding with tv_usec instead. Sat Jun 24 21:21:47 BST 2000 Jim Hague <jim.hague@acm.org> * packages/redhat/README, packages/redhat/noffle-expire, packages/redhat/noffle.spec: Initial versions. * src/noffle.c, docs/noffle.1: Remove --post (local|all) and replace with just --post. 'Approved:' header recognition removes need for --post varieties. * src/post.c: 'Approved:' header recognition, post to all external servers not just first, check all groups for post access before posting to one. Sat Jun 24 20:45:52 BST 2000 Jim Hague <jim.hague@acm.org> * src/noffle.c: Set last accessed time on group when subscribed from command line. * src/post.c: Bugfix - Post_close on duplicate article post. * src/protocol.c: Fix bug in Prt_genMsgId that caused duplicate message IDs to be generated for posts in the same second. Sat Jun 22 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * doc/NOTES: Removed section about GNUS hanging. It was caused by the "select" bug in Noffle. Sat Jun 22 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/server.c, src/protocol.c: Fixed a critical bug. "select" cannot be used with buffered stdio. This caused Noffle to hang with some readers (like tin). Mon Jun 19 22:43:38 BST 2000 Jim Hague <jim.hague@acm.org> * src/util.c, src/database.c: Fix header line reading bug. Tue Jun 13 21:31:32 BST 2000 Jim Hague <jim.hague@acm.org> * src/noffle.c: Add include <sys/time.h> before sys/resource.h. Man page says you need it, FreeBSD won't compile without it. * src/client.c: Remove SA_INTERRUPT flag set from installSignalHandler. It is flagged as a no-op in the Linux headers, and does not exist on FreeBSD or Solaris. * src/configfile.h, src/configfile.c, src/protocol.h, src/protocol.c, src/post.c, docs/noffle.conf.5: Add 'path-header' and addition of Path: header to posted articles if required. Tue Jun 13 07:27:21 BST 2000 Jim Hague <jim.hague@acm.org> * src/configfile.h, src/configfile.c, src/database.c: Redo config expires routines to remove enumerator and replace with routine to obtain expire time for specified group. * src/configfile.h, src/configfile.c, src/server.c, noffle.conf.example, docs/noffle.conf.5: Change 'auto-subscribe-mode' to 'default-auto-subscribe-mode' and add 'auto-subscribe-mode <grp pattern> <mode>'. For the moment, spot old usage of 'auto-subscribe-mode' and interpret it as 'default-auto-subscribe-mode'. * src/client.c: Rename variable to remove compiler warning. Sat Jun 11 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * Prepare for version 1.0pre6 * configure.in: Removed warning options for warnings that are unavoidable with libgdbm Mon Jun 5 09:46:30 BST 2000 Jim Hague <jim.hague@acm.org> * src/client.c, src/fetch.c, src/group.c, src/group.h, src/noffle.c: Don't track remote message number read unless subscribed to a group. This stops 'Missing articles' pseudos being generated when you join a group some time after doing the 'noffle --query groups' that first found the group, or if you resubscribe a while after unsubscribing. They will still be generated if articles are missed when a group is subscribed, in which case the pseudo message is entirely applicable. Sat Jun 03 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * docs/NOTES: removed the whole section about the mail2news gateway. It doesn't really work, because procmail forks for each mail and changing the posting allowed status is not atomic. Thu Jun 01 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * docs/NOTES: Added section about "replace-messageid" option in the Mail-News-Gateway chapter. Mon May 29 19:12:47 BST 2000 Jim Hague <jim.hague@acm.org> * src/client.c: Fix spelling mistake in comment. * docs/noffle.1: Add a little bit more to the description of --online. Mon May 29 18:28:25 CEST 2000 Uwe Hermann <uh1763@bingo-ev.de> * configure, configure.in: Changed the --enable-debug option of configure. It now accepts the parameters 'no', 'min' and 'yes', i.e. no compiler- warnings, minimum compiler-warnings and maximum compiler-warnings. Default is 'min'. Stable releases should have 'no' as default, IHMO. * NEWS: Update. Fri May 26 11:38:27 BST 2000 Jim Hague <jim.hague@acm.org> * docs/NOTES: Added notes on knode. * src/client.c: Corrected comment. Thu May 25 22:03:56 BST 2000 Jim Hague <jim.hague@acm.org> * src/post.c: Fixed stupid bug in article checking code where a correctly formatted Date: line would have the "Date: " removed before writing the outgoing file. Remote servers, not unnaturally, get upset about this. Mea culpa :-( Sat May 20 22:10:48 CEST 2000 Uwe Hermann <uh1763@bingo-ev.de> * docs/Makefile.am, docs/Makefile.in: Added INTERNALS to docs/Makefile.am, so that it is included in the distribution by 'make distcheck'. * docs/NOTES: Added info about pan versions 0.7.6 and 0.8 Sat May 20 11:46:54 BST 2000 Jim Hague <jim.hague@acm.org> * src/client.c: Closer perusal of Son Of RFC1036 reveals that Supersedes: can have multiple message IDs. Do this. Sat May 20 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/noffle.c: always enable generation of core files. Fri May 19 14:02:44 BST 2000 Jim Hague <jim.hague@acm.org> * src/util.h, src/util.c, src/database.c, src/pseudo.c, src/post.c: Redo Utl_rfc822Date to not use strftime - this was potentially wrong as it would only generate a conformant date string in English locales - and rename to Utl_newsDate because the date format is actually a subset of RFC822 - see Son Of RFC1036. Also add Utl_parseNewsDate, ensure the date on posted articles is conformant and replace if not, and implement observance of Expires: headers. * src/client.c: Observe Supersedes: headers on incoming articles. * src/content.c: Ensure if last article(s) in group are cancelled that article numbers aren't re-used. * docs/INTERNALS: Move INTERNALS to docs/. Thu May 18 13:22:36 BST 2000 Jim Hague <jim.hague@acm.org> * Recognise explicit posting statuses of 'y', 'n' and 'the rest'. The latest IETF draft says you can have other statuses apart from 'm' (moderated group), and these should probably be treated in the same way as 'm', i.e. forwarded to the external server to worry about. Wed May 17 21:19:19 BST 2000 Jim Hague <jim.hague@acm.org> * src/configfile.h, src/configfile.c, src/post.h, src/post.c, src/noffle.c, src/server.c, docs/noffle.1, docs/noffle.conf.5: Moved all article posting code into post.[hc], removed 'remove-messageid' option, added '--post' to noffle command line. Added 'post-locally' option. docs/NOTES still needs updating. Needs more testing too. Wed May 17 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * README: Clean-up and update. * docs/noffle.conf.5, src/configfile.h, src/server.c: Disabled remove-msgid option. Mon May 15 11:21:28 BST 2000 Jim Hague <jim.hague@acm.org> * src/configfile.h, src/configfile.c, src/client.c, docs/noffle.conf.5: Added getgroups and omitgroups options. Sun May 14 16:51:24 BST 2000 Jim Hague <jim.hague@acm.org> * docs/NOTES: Added notes on trn, xrn and knews. * src/configfile.h, src.configfile.c, src/server.c, docs/noffle.conf.5: Increment the article number of the gen info article in groups that are not auto-subscribed each time the gen info article is read. The gen info article thus remains unread at the start of every newsreading session. This behaviour can be disabled by setting new config setting 'info-always-unread' to 'no'. Default is 'yes'. This (I hope) restores Markus's preferred behaviour. * INTERNALS: Added file with some rough jottings on the internals of Noffle. A work in (probably sporadic) progress. Sun May 14 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/fetch.c: Did some refactoring. Sat May 13 15:09:01 BST 2000 Jim Hague <jim.hague@acm.org> * src/itemlist.c: Fixed stupid, Stupid, STUPID bug in Itl_next(). Redid itemlist code slightly to remove need to keep separators string, at the cost of making it impossible to use '\1' as a separator. I don't think this will be a problem. * src/log.h, src/log.c, src/over.h, src/over.c: Adjusted consting in Log_init and new_Over to remove compiler warnings. * src/portable.h, src/server.c, src/client.c: Introduced UNUSED(x) macro to indicate deliberately unused function parameters and remove warnings. * src/content.c: Preserve gen info in Cont_write() provided it is followed by an article with the next number. Stops gen info article vanishing instantly on reading when auto-subscribe is on, which was sort-of confusing for users (why can't I read that again?) and caused xrn to complain the NNTP server was broken. Sat May 13 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/client.c: Rewrote needsMark(): uses itemlist.h, more debugging output. * src/server.c: Rewrote getTimesInSeconds(): arguments ar now int and checked with assertions. Return value is time_t and must be checked for (time_t)-1. Sat May 13 06:20:01 CEST 2000 Uwe Hermann <uh1763@bingo-ev.de> * src/Makefile.am, src/Makefile.in: Added portable.h to the list of sources. I forgot this in my last commit. Sorry. Fri May 12 2000 Markus Enzenberger <markus.enzenberger@t-online.de> * src/client.c: add some intermediate variables for easier debugging in needsMark(). It seems that thread mode is sometimes not working. * src/client.c, src/content.c, src/dynamicstring.h, src/dynamicstring.c, src/util.h, src/util.c, src/protocol.c: Changed some variable types and used some casts to avoid compiler warnings about signedness. In general, int should be used for parameters for allowing a signedness assertion in the function. (see J.Lakos: Large-Scale C++ Software Design, section 9.2). * src/client.c, src/database.c, src/database.h, src/fetch.c, src/fetchlist.c, src/fetchlist.h, src/group.c, src/group.h, src/noffle.c, src/server.c src/server.h: Renamed some variables, because they caused compiler warnings because of shadowing global variables from system include files (index, stat, serv). * src/fetchlist.c: Avoid compiler warning because of cast from const to non-const. * src/post.c, src/server.c: Avoid compiler warnings about incomplete initializer blocks. Fri May 12 10:19:56 CEST 2000 Uwe Hermann <uh1763@bingo-ev.de> * configure, configure.in: Only add all those compiler-switches like -ansi, -pedantic etc. if we use gcc. Other c-compilers are unlikely to have those switches. Wed May 10 00:25:44 CEST 2000 Uwe Hermann <uh1763@bingo-ev.de> * src/client.c, src/configfile.c, src/content.c, src/control.c, src/database.c, src/dynamicstring.c, src/fetch.c, src/fetchlist.c, src/group.c, src/itemlist.c, src/lock.c, src/log.c, src/noffle.c, src/online.c, src/outgoing.c, src/over.c, src/post.c, src/protocol.c, src/pseudo.c, src/request.c, src/server.c, src/util.c: Added portable.h #include. * src/client.h, src/database.h, src/fetch.c, src/group.h, src/lock.c, src/outgoing.c, src/over.c, src/over.h, src/pseudo.c, src/server.c, src/util.c, src/util.h: Added some #ifdefs to correctly include either time.h or sys/time.h or both, depending on which are found. * src/noffle.c: Changed the return-type of the signal-handlers bugReport() and logSignal() to RETSIGTYPE, which is either void or int, depending on the system you compile on (autoconf #defines the RETSIGTYPE). * src/portable.h: Added file. This #defines some macros, so the code uses __snprintf() and __vsnprintf if snprintf and vsnprintf aren't available. This is the case on SunOS, for example. Sat May 6 12:25:39 BST 2000 Jim Hague <jim.hague@acm.org> * src/server.c: Changed XOVER with no arg. to return info for current article, not error. * src/server.c, src/content.h, src/content.c: XHDR - added 'xref' to headers recognised to keep trn happy, and recognise message ID argument. * src/server.c, src/content.c: Ensure first/last from LIST ACTIVE and GROUP agree (trn uses former). Tricky with pseudo gen info articles around. Presence of these now only recorded in content and not reflected in group first/last until proper article posted after pseudo. * src/client.c, NEWS: Reinstated starting article numbering from first article number on server. Reasoning below is wrong except in exceptional circumstances (e.g. join group, auto-subscribe, manual unsubscribe, auto subscribe again, etc. to get > 2 Noffle info messages in group. Bring reader up to date, remove & reinstall Noffle. Join group, autosubscribe after more news arrives at server, reader thinks it has read n articles it hasn't, where n is number of Noffle info messages in group first time round - 2). Feature is generally useful, esp. in development, so back in it goes. * src/group.c: Forget cached group info when group database closed. Sat May 6 01:31:04 CEST 2000 Uwe Hermann <uh1763@bingo-ev.de> * Makefile.in, configure, configure.in, docs/Makefile.in, src/Makefile.in: Added checks for the mail and sort programs. ./configure will abort if they're not found. * README: Removed the paragraph about news client software, as it's the same as the one in docs/NOTES. * TODO: Removed 'expiring by groups' and 'move some text from noffle.1 to noffle.conf.5'. * docs/NOTES: Changed the text about -DDEBUG to explain one should use './configure --enable-debug'. * docs/noffle.1, docs/noffle.conf.5: Minor fixes. Added myself and Jim Hague to the AUTHORS section :-) * src/client.h, src/common.h, src/configfile.h, src/content.c, src/content.h, src/control.c, src/control.h, src/database.h, src/dynamicstring.c, src/dynamicstring.h, src/fetch.h, src/fetchlist.h, src/group.h, src/itemlist.c, src/itemlist.h, src/lock.h, src/log.c, src/log.h, src/noffle.c, src/online.h, src/outgoing.h, src/over.c, src/over.h, src/post.h, src/protocol.h, src/pseudo.h, src/request.h, src/server.h, src/util.c, src/util.h: Added the <config.h> include. * src/content.c: Added missing include "content.h". Added a missing 'void' in the declaration of clearCont(). * src/fetchlist.c: Casted fetchlist.size to (size_t) in a call to qsort(), as qsort() expects a size_t. This removes a warning. * src/noffle.c: Made doRequested() static. Added missing void to enableCorefiles(). * src/log.c, src/protocol.c, src/online.c, src/pseudo.c: Added missing includes. * src/pseudo.c: Made genOv() and genPseudo() static. * src/server.c: Added missing void to postArts(). Made touchArticle() static. * src/util.c: Casted arguments of malloc() and memcpy() to size_t. * src/dynamicstring.c, src/itemlist.c, src/over.c, src/request.c, src/util.c: Removed casting of the result of malloc(). This is not necessary and can hide a missing include of <stdlib.h>. Fri May 5 23:39:52 CEST 2000 Uwe Hermann <uh1763@bingo-ev.de> * client.c, client.h, common.h, config.c, config.h, content.c, content.h, control.c, control.h, database.c, database.h, dynamicstring.c, dynamicstring.h, fetch.c, fetch.h, fetchlist.c, fetchlist.h, group.c, group.h, itemlist.c, itemlist.h, lock.c, lock.h, log.c, log.h, noffle.c, online.c, online.h, outgoing.c, outgoing.h, over.c, over.h, post.c, post.h, protocol.c, protocol.h, pseudo.c, pseudo.h, request.c, request.h, server.c, server.h, util.c, util.h, wildmat.c, wildmat.h: Moved files to the subdirectory src/ * Makefile.am, acconfig.h, configure.in, docs/Makefile.am, src/Makefile.am, Makefile.in, aclocal.m4, config.h.in, configure, install-sh, missing, mkinstalldirs, stamp-h.in, docs/Makefile.in, src/Makefile.in: Added files. They are used by aclocal, autoheader, autoconf and automake. * src/config.c, src/config.h: Renamed to configfile.c and configfile.h, because configure will generate a config.h file itself. * src/client.c, src/content.c, src/database.c, src/fetch.c, src/fetchlist.c, src/group.c, src/lock.c, src/noffle.c, src/online.c, src/outgoing.c, src/over.c, src/pseudo.c, src/request.c, src/server.c, src/util.c: Changed '#include "config.h"' to '#include "configfile.h"'. * src/client.c, src/content.c, src/database.c, src/fetch.c, src/fetchlist.c, src/group.c, src/lock.c, src/online.c, src/outgoing.c, src/post.c, src/protocol.c, src/request.c, src/server.c: Files now #include <config.h>. Added missing <stdio.h>. This removes the warnings about snprintf() not being declared. * Makefile: Removed. This is now generated by configure. Fri May 5 22:24:37 CEST 2000 Uwe Hermann <uh1763@bingo-ev.de> * AUTHORS.html, CHANGELOG.html, COPYING.html, README.html, FAQ.html, NOTES.html, INSTALL.html: Removed files. * AUTHORS, COPYING, ChangeLog, README, INSTALL, NEWS, docs/FAQ, docs/NOTES: Added files. * TODO.TXT: Renamed to TODO. Slightly changed formatting. * README: Reformatted the file. Added info about CVS. Added a pointer to the file INSTALL. * noffle.1, noffle.conf.5: Moved to docs/ * LSM.TXT: Moved to docs/noffle.lsm. Small fix. * INSTALL: Adapted to autoconf build-system. A few minor fixes. ------------------------------------------------------------------------------- 1.0pre6pre * Forget cached group info when group database closed. * Added list of 'forbidden' newsgroup specs., as defined in draft IETF Newsgroup Format (C.Lindsey), tracked to replace RFC1036. This defines newsgroup names that should only be used for server-local groups and server pseudo-groups (e.g. INN's to.*, cancel, cancel.*, junk). These are now intercepted when querying server groups and ignored. Group names omitted are any single component names, any 'control.*', 'to' or 'to.*',and any with a component 'all' or 'ctl'. Note these restrictions do not apply to local group names. * Fixed problem with article numbering if the overview file empties, e.g. due to all articles in a very low volume group expiring. This would cause article numbers to be set back to 1 when a new article arrives. * Changed %i to %d in sscanfs everywhere. INN often (as it is entitled to do) has leading zeros on numbers. %i interprets these as octal numbers. Also changed %i to %d in printfs, for no good reason. * New groups now always start numbering at article 1. Previously article numbering would start with the first held remote article number, in an attempt to avoid newsreaders noticing if noffle is deleted and reinstalled. Given Noffle may well not collect the first held article anyway - it only will if the default number of articles to retrieve on a first connect is big enough - and the fact that Noffle's pseudo articles make it impossible to keep local article numbers in lock-step with the server, there is the chance this scheme would just cause readers to miss new articles. * Record newsgroup posting status. Enforce it at posting time. Added --modify to change newsgroup descriptions for all groups and posting status for local groups. * Added group deletion. * Added message cancellation - from command line or by control message. Note command line only cancels locally - it can't be used to cancel a message that has already gone offsite. A control messages cancels locally if possible; it is only propaged offsite if the target is in a non-local group and has itself already gone offsite. * Added wildmat code taken from INN - ensure Noffle wildcarding is exactly to spec. * Added group-specific expire times. * Noffle now sends a "MODE READER" command after connecting to the remote server. INN needs this before it will permit POST. * Applied patch from Jim Hague: support for local groups / new command line options --create and --cancel. * Changed output of 'noffle -a all' to standard mailbox format, so that tools like grepmail work. Version 1.0pre5 * Core files are always enabled when running as server and debugging symbols are always in the executable. * Use GDBM_FAST flag for hash files. * Fixed a bug in online mode with servers that need authentication. * Minor changes and improvements Version 1.0pre4 * Fixed a bug that broke cross-posting of articles * Fixed a bug that truncated headers of posted articles. * Long overview header lines are now split into multiple lines in response to HEAD or ARTICLE commands. * Fixed a bug that caused a crash sometimes when updating the requested article list after releasing/regetting the global lock * Server is now allowed to generate core files on crash (in spool directory) if compiled with -DDEBUG option * Opening an article additionally marks all references as interesting, so more articles are fetched in thread mode, if one article of a thread was opened. * New config option "connect-timeout" * Minor improvements and bug-fixes Version 1.0pre3 * Added XPAT command. Not full syntax, but enough for making slrn's thread reconstruction work * Storing of requested message-ids completely rewritten (thanks to Volker Wysk for the patch). Much more efficient now. Bug removed that broke requesting articles with message-IDs containing a slash. Added --requested option. * When fetching requested articles, do not send more than 20 ARTICLE commands at once, before parsing the server response. * Minor bug fixes and improvements. Version 1.0pre2 * Added RPM_BUILD_ROOT variable to Makefile (useful for creating RPM source packages) * Removed terrible bug that truncated article body after releasing and re-getting global lock Version 1.0pre1 * needs complete re-installing, some formats have changed * Support for multiple remote servers * Faster download when fetching news, because articles are prepared in database while parsing response to XOVER and all ARTICLE commands are sent at once * Bug removed that made authetication only work with lower-case passwords * Other small bug fixes and improvements Version 0.19 * Fix broken full mode * Fix cutting of articles after line beginning with '.' * Other bug fixes * LIST commands can have pattern argument now * initial-fetch option removed (same as max-fetch now) Version 0.18 * needs complete re-installing, most file format have changed * Group database uses gdbm, databases moved to /var/spool/noffle/data * Most config options changed their names, some do not longer exists * New fetch mode "thread" added * Different --fetch invocations replaced by single option * Meaning of "--database" option changed, "--article" option added * Failed postings are now returned to sender by "mail" command * Expire uses last access time * Auto-subscribe option only subscribes groups now, if an article body is opened (no longer if group is selected). * Improve posting at German T-Online provider: rename X-Sender header, Reply-To header is added, if missing (T-Online overwrites From headers), allow to remove Message-ID as a config option. * Doc files are now copied to $(PREFIX)/doc/noffle * Y2K compliance of NEWGROUPS command * Various bug fixes (thanks to all users helping with bug reports) * Various changes for tuning and improvement Version 0.17 * Bug removed that caused NOFFLE to exceed the allowed maximum number of open files on longer sessions. Version 0.16 * Noffle generates Message-ID if a message received for posting has none.