From 485fc114994b12a21b554c22e54ee4ead3cc1347 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Tue, 22 Jun 2004 23:38:39 +0000 Subject: [PATCH] Bugfix: telegrams could not be received, since the recipient list file format was changed in rev 1.288 (sbbs 3.11a). Why did no one report this bug earlier (!), I wonder... Now logs an error if the telegram could not be saved successfully. --- src/sbbs3/mailsrvr.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index e4c88a3140..d1f93bf987 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -2071,23 +2071,25 @@ static void smtp_thread(void* arg) telegram_buf[length+strlen(str)]=0; /* Need ASCIIZ */ /* Send telegram to users */ - rewind(rcptlst); - rcpt_count=0; - while(!feof(rcptlst) && rcpt_count<startup->max_recipients) { - if(fgets(str,sizeof(str),rcptlst)==NULL) - break; - usernum=atoi(str); - if(fgets(rcpt_name,sizeof(rcpt_name),rcptlst)==NULL) - break; - truncsp(rcpt_name); - if(fgets(rcpt_addr,sizeof(rcpt_addr),rcptlst)==NULL) - break; - truncsp(rcpt_addr); - putsmsg(&scfg,usernum,telegram_buf); - lprintf(LOG_INFO,"%04d SMTP Created telegram (%ld/%u bytes) from %s to %s <%s>" - ,socket, length, strlen(telegram_buf), sender_addr, rcpt_name, rcpt_addr); - rcpt_count++; + sec_list=iniGetSectionList(rcptlst,NULL); /* Each section is a recipient */ + for(rcpt_count=0; sec_list!=NULL + && sec_list[rcpt_count]!=NULL + && rcpt_count<startup->max_recipients; rcpt_count++) { + + section=sec_list[rcpt_count]; + + SAFECOPY(rcpt_name,iniGetString(rcptlst,section ,smb_hfieldtype(RECIPIENT),"unknown",value)); + usernum=iniGetInteger(rcptlst,section ,smb_hfieldtype(RECIPIENTEXT),0); + SAFECOPY(rcpt_addr,iniGetString(rcptlst,section ,smb_hfieldtype(RECIPIENTNETADDR),str,value)); + + if((i=putsmsg(&scfg,usernum,telegram_buf))==0) + lprintf(LOG_INFO,"%04d SMTP Created telegram (%ld/%u bytes) from %s to %s <%s>" + ,socket, length, strlen(telegram_buf), sender_addr, rcpt_name, rcpt_addr); + else + lprintf(LOG_ERR,"%04d !SMTP ERROR %d creating telegram from %s to %s <%s>" + ,socket, i, sender_addr, rcpt_name, rcpt_addr); } + iniFreeStringList(sec_list); free(telegram_buf); sockprintf(socket,ok_rsp); telegram=FALSE; -- GitLab