diff --git a/src/sbbs3/chksmb.c b/src/sbbs3/chksmb.c index 7e71e87771aa1f1ec2579dea2356b07e9ba3c87a..13d3774eb2afbb552ff412dccf825fafad99eebb 100644 --- a/src/sbbs3/chksmb.c +++ b/src/sbbs3/chksmb.c @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2008 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -344,7 +344,7 @@ int main(int argc, char **argv) if(!(smb.status.attr&SMB_EMAIL) && chkhash) { /* Look-up the message hashes */ - hashes=smb_msghashes(&msg,body); + hashes=smb_msghashes(&msg,body,SMB_HASH_SOURCE_ALL); if(hashes!=NULL && hashes[0]!=NULL && (i=smb_findhash(&smb,hashes,NULL,SMB_HASH_SOURCE_ALL,/* mark */TRUE )) diff --git a/src/smblib/smbadd.c b/src/smblib/smbadd.c index e5b6bbab85c189c1b10462a5b8821011d0c35098..c336419492d2ebd02f573e9fcbfe63f0e1f73525 100644 --- a/src/smblib/smbadd.c +++ b/src/smblib/smbadd.c @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2008 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public License * @@ -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); + hashes=smb_msghashes(msg,body,SMB_HASH_SOURCE_ALL); 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/smbhash.c b/src/smblib/smbhash.c index f80976170ab78f2e9d585dc7723ebf987f93108a..bf6423c6499b761c2e61d274ee351f4e5117740f 100644 --- a/src/smblib/smbhash.c +++ b/src/smblib/smbhash.c @@ -238,7 +238,7 @@ hash_t* SMBCALL smb_hashstr(ulong msgnum, ulong t, unsigned source, unsigned fla /* Allocates and calculates all hashes for a single message */ /* Returns NULL on failure */ -hash_t** SMBCALL smb_msghashes(smbmsg_t* msg, const uchar* body) +hash_t** SMBCALL smb_msghashes(smbmsg_t* msg, const uchar* body, long source_mask) { size_t h=0; uchar flags=SMB_HASH_CRC16|SMB_HASH_CRC32|SMB_HASH_MD5; @@ -251,16 +251,16 @@ hash_t** SMBCALL smb_msghashes(smbmsg_t* msg, const uchar* body) memset(hashes, 0, sizeof(hash_t*)*(SMB_HASH_SOURCE_TYPES+1)); - if(msg->id!=NULL && + if(msg->id!=NULL && (source_mask&(1<<SMB_HASH_SOURCE_MSG_ID)) && (hash=smb_hashstr(msg->hdr.number, t, SMB_HASH_SOURCE_MSG_ID, flags, msg->id))!=NULL) hashes[h++]=hash; - if(msg->ftn_msgid!=NULL && + if(msg->ftn_msgid!=NULL && (source_mask&(1<<SMB_HASH_SOURCE_FTN_ID)) && (hash=smb_hashstr(msg->hdr.number, t, SMB_HASH_SOURCE_FTN_ID, flags, msg->ftn_msgid))!=NULL) hashes[h++]=hash; flags|=SMB_HASH_STRIP_WSP|SMB_HASH_STRIP_CTRL_A; - if(body!=NULL && + if(body!=NULL && (source_mask&(1<<SMB_HASH_SOURCE_BODY)) && (hash=smb_hashstr(msg->hdr.number, t, SMB_HASH_SOURCE_BODY, flags, body))!=NULL) hashes[h++]=hash; @@ -285,7 +285,7 @@ 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); + hashes=smb_msghashes(msg,text,SMB_HASH_SOURCE_ALL); if(smb_findhash(smb, hashes, &found, SMB_HASH_SOURCE_ALL, update)==SMB_SUCCESS && !update) { retval=SMB_DUPE_MSG; diff --git a/src/smblib/smblib.h b/src/smblib/smblib.h index 6ae52594ccc370f874b3c009ddb2b5e01b8ca05a..932ec118c93f398397c16cb5598cb8aa49cb563a 100644 --- a/src/smblib/smblib.h +++ b/src/smblib/smblib.h @@ -182,7 +182,7 @@ SMBEXPORT hash_t* SMBCALL smb_hash(ulong msgnum, ulong time, unsigned source SMBEXPORT hash_t* SMBCALL smb_hashstr(ulong msgnum, ulong time, unsigned source ,unsigned flags, const char* str); -SMBEXPORT hash_t** SMBCALL smb_msghashes(smbmsg_t* msg, const uchar* text); +SMBEXPORT hash_t** SMBCALL smb_msghashes(smbmsg_t* msg, const uchar* text, long source_mask); SMBEXPORT int SMBCALL smb_addhashes(smb_t* smb, hash_t** hash_list, BOOL skip_marked); SMBEXPORT uint16_t SMBCALL smb_name_crc(const char* name); SMBEXPORT uint16_t SMBCALL smb_subject_crc(const char *subj);