From 4be8e46c41abf2360b04c0f89a745a017d7775a4 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Tue, 24 Mar 2009 20:40:17 +0000 Subject: [PATCH] Define and use SMB_HASH_SOURCE_DUPE, which doesn't include the message SUBJECT (subjects can/should not be used for dupe message checking). --- src/sbbs3/chksmb.c | 4 ++-- src/sbbs3/postmsg.cpp | 2 +- src/sbbs3/qwktomsg.cpp | 2 +- src/sbbs3/sbbsecho.c | 2 +- src/sbbs3/smbutil.c | 2 +- src/smblib/smbadd.c | 2 +- src/smblib/smbdefs.h | 1 + src/smblib/smbhash.c | 4 ++-- 8 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/sbbs3/chksmb.c b/src/sbbs3/chksmb.c index 13d3774eb2..d2f3106781 100644 --- a/src/sbbs3/chksmb.c +++ b/src/sbbs3/chksmb.c @@ -344,10 +344,10 @@ int main(int argc, char **argv) if(!(smb.status.attr&SMB_EMAIL) && chkhash) { /* Look-up the message hashes */ - hashes=smb_msghashes(&msg,body,SMB_HASH_SOURCE_ALL); + hashes=smb_msghashes(&msg,body,SMB_HASH_SOURCE_DUPE); if(hashes!=NULL && hashes[0]!=NULL - && (i=smb_findhash(&smb,hashes,NULL,SMB_HASH_SOURCE_ALL,/* mark */TRUE )) + && (i=smb_findhash(&smb,hashes,NULL,SMB_HASH_SOURCE_DUPE,/* mark */TRUE )) !=SMB_SUCCESS) { for(h=0;hashes[h]!=NULL;h++) { if(hashes[h]->flags&SMB_HASH_MARKED) diff --git a/src/sbbs3/postmsg.cpp b/src/sbbs3/postmsg.cpp index 17687dd623..d758ee258c 100644 --- a/src/sbbs3/postmsg.cpp +++ b/src/sbbs3/postmsg.cpp @@ -425,7 +425,7 @@ extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, client_t* ushort xlat=XLAT_NONE; int i; int storage=SMB_SELFPACK; - long dupechk_hashes=SMB_HASH_SOURCE_ALL; + long dupechk_hashes=SMB_HASH_SOURCE_DUPE; if(msg==NULL) return(SMB_FAILURE); diff --git a/src/sbbs3/qwktomsg.cpp b/src/sbbs3/qwktomsg.cpp index ff6b8089cb..1cc4df9404 100644 --- a/src/sbbs3/qwktomsg.cpp +++ b/src/sbbs3/qwktomsg.cpp @@ -221,7 +221,7 @@ bool sbbs_t::qwk_import_msg(FILE *qwk_fp, char *hdrblk, ulong blocks uint16_t net_type; ushort xlat=XLAT_NONE; int storage=SMB_SELFPACK; - long dupechk_hashes=SMB_HASH_SOURCE_ALL; + long dupechk_hashes=SMB_HASH_SOURCE_DUPE; if(subnum!=INVALID_SUB && (hdrblk[0]=='*' || hdrblk[0]=='+' || cfg.sub[subnum]->misc&SUB_PONLY)) diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index 3582106fe6..0e3ea2ecf9 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -2236,7 +2236,7 @@ int fmsgtosmsg(uchar* fbuf, fmsghdr_t fmsghdr, uint user, uint subnum) ushort xlat=XLAT_NONE,net; ulong l,m,length,bodylen,taillen,crc; ulong save; - long dupechk_hashes=SMB_HASH_SOURCE_ALL; + long dupechk_hashes=SMB_HASH_SOURCE_DUPE; faddr_t faddr,origaddr,destaddr; smb_t* smbfile; char fname[MAX_PATH+1]; diff --git a/src/sbbs3/smbutil.c b/src/sbbs3/smbutil.c index 484b95cef2..e3b349cdb0 100644 --- a/src/sbbs3/smbutil.c +++ b/src/sbbs3/smbutil.c @@ -183,7 +183,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address, int i; ushort agent=AGENT_SMBUTIL; smbmsg_t msg; - long dupechk_hashes=SMB_HASH_SOURCE_ALL; + long dupechk_hashes=SMB_HASH_SOURCE_DUPE; /* Read message text from stream (file or stdin) */ msgtxtlen=0; diff --git a/src/smblib/smbadd.c b/src/smblib/smbadd.c index c336419492..93bc61d34e 100644 --- a/src/smblib/smbadd.c +++ b/src/smblib/smbadd.c @@ -85,7 +85,7 @@ int SMBCALL smb_addmsg(smb_t* smb, smbmsg_t* msg, int storage, long dupechk_hash msg->hdr.number=smb->status.last_msg+1; if(!(smb->status.attr&(SMB_EMAIL|SMB_NOHASH))) { - hashes=smb_msghashes(msg,body,SMB_HASH_SOURCE_ALL); + hashes=smb_msghashes(msg,body,SMB_HASH_SOURCE_DUPE); if(smb_findhash(smb, hashes, &found, dupechk_hashes, /* mark? */FALSE)==SMB_SUCCESS) { safe_snprintf(smb->last_error,sizeof(smb->last_error) diff --git a/src/smblib/smbdefs.h b/src/smblib/smbdefs.h index 633be8e44a..6ee40f7dcd 100644 --- a/src/smblib/smbdefs.h +++ b/src/smblib/smbdefs.h @@ -469,6 +469,7 @@ enum { #define SMB_HASH_SOURCE_MASK 0x1f #define SMB_HASH_SOURCE_NONE 0 #define SMB_HASH_SOURCE_ALL 0xff +#define SMB_HASH_SOURCE_DUPE ((1<<SMB_HASH_SOURCE_BODY)|(1<<SMB_HASH_SOURCE_MSG_ID)|(1<<SMB_HASH_SOURCE_FTN_ID)) typedef struct _PACK { diff --git a/src/smblib/smbhash.c b/src/smblib/smbhash.c index 2a87ff6157..d75fde471c 100644 --- a/src/smblib/smbhash.c +++ b/src/smblib/smbhash.c @@ -289,9 +289,9 @@ int SMBCALL smb_hashmsg(smb_t* smb, smbmsg_t* msg, const uchar* text, BOOL updat if(smb->status.attr&(SMB_EMAIL|SMB_NOHASH)) return(SMB_SUCCESS); - hashes=smb_msghashes(msg,text,SMB_HASH_SOURCE_ALL); + hashes=smb_msghashes(msg,text,SMB_HASH_SOURCE_DUPE); - if(smb_findhash(smb, hashes, &found, SMB_HASH_SOURCE_ALL, update)==SMB_SUCCESS && !update) { + if(smb_findhash(smb, hashes, &found, SMB_HASH_SOURCE_DUPE, update)==SMB_SUCCESS && !update) { retval=SMB_DUPE_MSG; safe_snprintf(smb->last_error,sizeof(smb->last_error) ,"duplicate %s: %s found in message #%lu" -- GitLab