patch for X-FTN-PATH

Pablo Saratxaga (srtxg@linux.chanae.stben.be)
Wed, 23 Jul 1997 04:44:56 +0200 (MET DST)

Hello,

I've been told that some usenet->fido gateway crashed because of the
way that ifmail makes the X-FTN-PATH: lines, that is adding one whith
one's address before of filling the last.

Here is a little change to ifgate/mkrfcmsg.c that formats them (same code
as in message.c btw)

--- ifgate/mkrfcmsg.c.orig Wed Jul 23 04:37:54 1997
+++ ifgate/mkrfcmsg.c Wed Jul 23 04:41:51 1997
@@ -15,6 +15,7 @@
#include "config.h"

#define BOUNDARY 79
+#define MAXPATH 73

int num_echo=0,num_mail=0;
extern char *version;
@@ -533,6 +534,7 @@
strcasecmp(tmsg->key,"FMPT") &&
strcasecmp(tmsg->key,"TOPT") &&
strcasecmp(tmsg->key,"FLAGS") &&
+ strcasecmp(tmsg->key,"PATH") &&
strcasecmp(tmsg->key,"RFC-Lines") &&
strcasecmp(tmsg->key,"RFC-Path") &&
strcasecmp(tmsg->key,"RFC-Received") &&
@@ -557,7 +559,42 @@

if (newsmode)
{
- fprintf(pip,"X-FTN-PATH: %s\n",ascfnode(bestaka,0x06));
+ fa_list *tmpl,*ptl=NULL;
+ char sbe[16];
+ int seenlen=0,oldnet;
+
+ for (tmsg=kmsg;tmsg;tmsg=tmsg->next)
+ if (!strcmp(tmsg->key,"PATH"))
+ {
+ fill_path(&ptl,tmsg->val);
+ }
+ sprintf(sbe,"%s",ascfnode(bestaka,0x06));
+ fill_path(&ptl,sbe);
+ uniq_list(&ptl);
+
+ /* ensure it will not match for the first entry */
+ oldnet=ptl->addr->net-1;
+ fprintf(pip,"X-FTN-PATH:");
+ for (tmpl=ptl;tmpl;tmpl=tmpl->next)
+ {
+ if (tmpl->addr->net == oldnet)
+ sprintf(sbe," %u",tmpl->addr->node);
+ else
+ sprintf(sbe," %u/%u",tmpl->addr->net,
+ tmpl->addr->node);
+ oldnet=tmpl->addr->net;
+ seenlen+=strlen(sbe);
+ if (seenlen > MAXPATH)
+ {
+ seenlen=0;
+ fprintf(pip,"\nX-FTN-PATH:");
+ sprintf(sbe," %u/%u",tmpl->addr->net,
+ tmpl->addr->node);
+ seenlen=strlen(sbe);
+ }
+ fprintf(pip,"%s",sbe);
+ }
+ fprintf(pip,"\n");
}

fprintf(pip,"\n");

-- 

A bientôt, Pablo Saratxaga

~ ~ :wq ;-) PGP Key available, key ID: 0x8F0E4975 -->