diff --git a/src/sbbs3/qwktomsg.cpp b/src/sbbs3/qwktomsg.cpp index 34976a379196eaa7fd67992c5a7eb87ffb467bbf..8ca6f47601ce932ff9429f2091866344ac4f1060 100644 --- a/src/sbbs3/qwktomsg.cpp +++ b/src/sbbs3/qwktomsg.cpp @@ -54,6 +54,7 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum bool header_cont=false; ulong crc,block,blocks; smbmsg_t msg; + smbmsg_t remsg; struct tm tm; memset(&msg,0,sizeof(smbmsg_t)); /* Initialize message header */ @@ -430,6 +431,26 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum return(false); } + if(msg.reply_id!=NULL + && get_msg_by_id(&cfg, &smb, msg.reply_id, &remsg)==TRUE) { + msg.hdr.thread_orig=remsg.hdr.number; /* needed for thread linkage */ + smb_freemsgmem(&remsg); + } + if(msg.hdr.thread_orig + && smb_getstatus(&smb)==SMB_SUCCESS) { + memset(&remsg,0,sizeof(remsg)); + remsg.hdr.number=msg.hdr.thread_orig; + if(smb_getmsgidx(&smb,&remsg)==SMB_SUCCESS + && smb_lockmsghdr(&smb,&remsg)==SMB_SUCCESS) { + + if(smb_getmsghdr(&smb,&remsg)==SMB_SUCCESS) + smb_updatethread(&smb,&remsg,smb.status.last_msg+1); + + smb_unlockmsghdr(&smb,&remsg); + smb_freemsgmem(&remsg); + } + } + if(smb.status.attr&SMB_HYPERALLOC) { msg.hdr.offset=smb_hallocdat(&smb); storage=SMB_HYPERALLOC;