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