Fixed a bug when there is a partly Content-Type header

This commit is contained in:
Michiel Broek 2005-08-15 18:40:47 +00:00
parent a78ed544a2
commit 33a7c3aebf

View File

@ -164,7 +164,7 @@ int rfc2ftn(FILE *fp, faddr *recipient)
sprintf(currentgroup, "%s", msgs.Newsgroup); sprintf(currentgroup, "%s", msgs.Newsgroup);
} else } else
email_in++; email_in++;
if (!CFG.allowcontrol) { if (!CFG.allowcontrol) {
if (hdr((char *)"Control",msg)) { if (hdr((char *)"Control",msg)) {
Syslog('+', "Rfc2ftn: Control message skipped"); Syslog('+', "Rfc2ftn: Control message skipped");
@ -172,13 +172,13 @@ int rfc2ftn(FILE *fp, faddr *recipient)
return 1; return 1;
} }
} }
if ((fmsg = mkftnhdr(msg, newsmode, recipient)) == NULL) { if ((fmsg = mkftnhdr(msg, newsmode, recipient)) == NULL) {
WriteError("Rfc2ftn: unable to create FTN headers from RFC ones, aborting"); WriteError("Rfc2ftn: unable to create FTN headers from RFC ones, aborting");
tidyrfc(msg); tidyrfc(msg);
return 1; return 1;
} }
if (newsmode) if (newsmode)
fmsg->area = xstrcpy(msgs.Tag); fmsg->area = xstrcpy(msgs.Tag);
svmsgid = fmsg->msgid_n; svmsgid = fmsg->msgid_n;
@ -200,7 +200,7 @@ int rfc2ftn(FILE *fp, faddr *recipient)
hash_update_s(&fmsg->reply_n, fmsg->area); hash_update_s(&fmsg->reply_n, fmsg->area);
} }
} }
chkftnmsgid(hdr((char *)"Message-ID",msg)); // ?? chkftnmsgid(hdr((char *)"Message-ID",msg)); // ??
removemime = FALSE; removemime = FALSE;
removemsgid = FALSE; removemsgid = FALSE;
@ -209,11 +209,12 @@ int rfc2ftn(FILE *fp, faddr *recipient)
removereplyto = TRUE; removereplyto = TRUE;
removereturnto = TRUE; removereturnto = TRUE;
ftnorigin = fmsg->ftnorigin; ftnorigin = fmsg->ftnorigin;
q = hdr((char *)"Content-Transfer-Encoding",msg); q = hdr((char *)"Content-Transfer-Encoding",msg);
if (q) if (q)
while (*q && isspace(*q)) while (*q && isspace(*q))
q++; q++;
if (!(q)) if (!(q))
q = (char *)"8bit"; q = (char *)"8bit";
if ((p = hdr((char *)"Content-Type",msg))) { if ((p = hdr((char *)"Content-Type",msg))) {
@ -230,20 +231,22 @@ int rfc2ftn(FILE *fp, faddr *recipient)
q = strtok(p, " \n\0"); q = strtok(p, " \n\0");
q = strtok(NULL, "; \n\0"); q = strtok(NULL, "; \n\0");
while (*q && isspace(*q)) if (q) {
q++; while (*q && isspace(*q))
Syslog('m', "charset part: %s", printable(q, 0)); q++;
if (q && (strncasecmp(q, "charset=", 8) == 0)) { Syslog('m', "charset part: %s", printable(q, 0));
/* if (q && (strncasecmp(q, "charset=", 8) == 0)) {
* google.com quotes the charset name /*
*/ * google.com quotes the charset name
if (strchr(q, '"')) { */
charset = xstrcpy(q + 9); if (strchr(q, '"')) {
charset[strlen(charset)-1] = '\0'; charset = xstrcpy(q + 9);
} else { charset[strlen(charset)-1] = '\0';
charset = xstrcpy(q + 8); } else {
charset = xstrcpy(q + 8);
}
Syslog('m', "Charset \"%s\"", printable(charset, 0));
} }
Syslog('m', "Charset \"%s\"", printable(charset, 0));
} }
} }