From cd447d368334569fb34e88336fc2419e44483a97 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Sun, 24 Mar 2019 08:54:02 +0000 Subject: [PATCH] Support netmail addresses (e.g. Internet e-mail addresses) longer than the 35 character limit imposed by FidoNet message "to" fields, in sbbs_t::netmail(). Use the regarding-message from_net field when a 'to' field is not passed to sbbs_t::netmail() --- src/sbbs3/fido.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/sbbs3/fido.cpp b/src/sbbs3/fido.cpp index 638d79ebe2..42e2a64d3f 100644 --- a/src/sbbs3/fido.cpp +++ b/src/sbbs3/fido.cpp @@ -103,7 +103,7 @@ bool sbbs_t::lookup_netuser(char *into) bool sbbs_t::netmail(const char *into, const char *title, long mode, smb_t* resmb, smbmsg_t* remsg) { char str[256],fname[128],*buf,*p,ch; - char to[FIDO_NAME_LEN] = ""; + char to[256] = ""; char from[FIDO_NAME_LEN]= ""; char subj[FIDO_SUBJ_LEN]= ""; char msgpath[MAX_PATH+1]; @@ -135,10 +135,17 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode, smb_t* resm if(remsg != NULL) { if(subj[0] == 0 && remsg->subj != NULL) SAFECOPY(subj, remsg->subj); - if(to[0] == 0 && remsg->from != NULL) - SAFECOPY(to, remsg->from); -// if(addr[0] == 0 && remsg->from_net.addr != NULL) -// smb_netaddrstr(&remsg->from_net, addr); + if(to[0] == 0) { + if((p = smb_netaddrstr(&remsg->from_net, tmp)) != NULL) { + if(strchr(p, '@')) { + SAFECOPY(to, p); + } else { + SAFEPRINTF2(to, "%s@%s", remsg->from, p); + } + } else { + SAFECOPY(to, remsg->from); + } + } } lookup_netuser(to); @@ -162,7 +169,7 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode, smb_t* resm bputs(text[EmailFilesNotAllowed]); mode&=~WM_FILE; } - return inetmail(into, title, mode, resmb, remsg); + return inetmail(to, title, mode, resmb, remsg); } p=strrchr(to,'@'); /* Find '@' in name@addr */ if(p==NULL || net_type != NET_FIDO) { @@ -234,7 +241,7 @@ bool sbbs_t::netmail(const char *into, const char *title, long mode, smb_t* resm } msg_tmp_fname(useron.xedit, msgpath, sizeof(msgpath)); - if(!writemsg(msgpath,nulstr,subj,WM_NETMAIL|mode,INVALID_SUB, into, from, &editor)) { + if(!writemsg(msgpath,nulstr,subj,WM_NETMAIL|mode,INVALID_SUB, to, from, &editor)) { bputs(text[Aborted]); return(false); } -- GitLab