logo       

Re: Can't unlink @030362756666303130000000ADF300000001: msg#00090

network.inn

Subject: Re: Can't unlink @030362756666303130000000ADF300000001

In article <Pine.GSO.4.44.0305070801100.21926-100000@xxxxxxxxxxxxxxxxxx>,
Kathryn Hemness <kfhemness@xxxxxxxxxxx> wrote;

} The file changes worked. Thanks a bunch.
:
} > But, I noticed a bug which incorrectly purges articles
} > which are crossposted to deleted newsgroup and stored onto
} > other than cnfs. That problem doesn't look like easy to
} > fix. I'll consider how to fix this part.

Now, I created another patch to fix above all. Could you
try it, if possible? The patch is against latest 2.3.5
branch.
--
Katsuhiro Kondou

Index: storage/ov.c
===================================================================
RCS file: /home/kondou/news/inn/repository/inn/storage/ov.c,v
retrieving revision 1.14.2.12
diff -u -r1.14.2.12 ov.c
--- storage/ov.c 2 Feb 2003 21:42:51 -0000 1.14.2.12
+++ storage/ov.c 10 May 2003 03:12:31 -0000
@@ -879,13 +879,9 @@
** Takes in the Xref information so that it can pass this to the storage
** API callback used to generate the list of files to remove.
*/
-void OVEXPremove(TOKEN token, BOOL deletedgroups, char **xref, int ngroups)
+STATIC void OVEXPremove(TOKEN token, char **xref, int ngroups)
{
EXPunlinked++;
- if (deletedgroups) {
- EXPprocessed++;
- EXPoverindexdrop++;
- }
if (EXPunlinkfile && xref != NULL) {
SMprintfiles(EXPunlinkfile, token, xref, ngroups);
if (!ferror(EXPunlinkfile))
@@ -1147,7 +1143,7 @@
if (EQ(group, arts[0])) {
for (i = 0; i < count; i++)
arts[i][strlen(arts[i])] = ':';
- OVEXPremove(token, FALSE, arts, count);
+ OVEXPremove(token, arts, count);
}
EXPoverindexdrop++;
return TRUE;
@@ -1159,7 +1155,7 @@
if (purge) {
for (i = 0; i < count; i++)
arts[i][strlen(arts[i])] = ':';
- OVEXPremove(token, FALSE, arts, count);
+ OVEXPremove(token, arts, count);
}
EXPoverindexdrop++;
return TRUE;
Index: storage/ovinterface.h
===================================================================
RCS file: /home/kondou/news/inn/repository/inn/storage/ovinterface.h,v
retrieving revision 1.9.2.1
diff -u -r1.9.2.1 ovinterface.h
--- storage/ovinterface.h 3 Feb 2001 07:30:52 -0000 1.9.2.1
+++ storage/ovinterface.h 10 May 2003 03:12:59 -0000
@@ -31,7 +31,6 @@
BOOL OVgroupbasedexpire(TOKEN token, char *group, char *data, int len, time_t
arrived, time_t expires);
BOOL OVgroupmatch(char *group);
BOOL OVhisthasmsgid(char *data);
-void OVEXPremove(TOKEN token, BOOL deletedgroups, char **xref, int ngroups);

#define DEFAULT_MAX_XREF_LEN 8192

Index: storage/buffindexed/buffindexed.c
===================================================================
RCS file:
/home/kondou/news/inn/repository/inn/storage/buffindexed/buffindexed.c,v
retrieving revision 1.40.2.9
diff -u -r1.40.2.9 buffindexed.c
--- storage/buffindexed/buffindexed.c 2 Feb 2003 21:42:52 -0000 1.40.2.9
+++ storage/buffindexed/buffindexed.c 10 May 2003 03:14:47 -0000
@@ -1791,6 +1791,7 @@
char flag;
HASH hash;
time_t arrived, expires;
+ OVSEARCH search;

if (group == NULL) {
for (i = 0 ; i < GROUPheader->freelist.recno ; i++) {
@@ -1806,11 +1807,14 @@
syslog(L_ERROR, "%s: could not mmap overview for hidden groups(%d)",
LocalLogName, i);
continue;
}
- for (j = 0 ; j < Gibcount ; j++) {
- if (Gib[j].artnum == 0)
- continue;
- /* this may be duplicated, but ignore it in this case */
- OVEXPremove(Gib[j].token, TRUE, NULL, 0);
+ search.hi = ge->high;
+ search.lo = ge->low;
+ search.cur = 0;
+ search.needov = TRUE;
+ while (ovsearch((void *)&search, NULL, &data, &len, &token, &arrived,
&expires)) {
+ if (innconf->groupbaseexpiry)
+ /* assuming "." is not real newsgroup */
+ OVgroupbasedexpire(token, ".", data, len, arrived, expires);
}
#ifdef OV_DEBUG
freegroupblock(ge);




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise