Fixed a bug when there is a partly Content-Type header
This commit is contained in:
parent
a78ed544a2
commit
33a7c3aebf
@ -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));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user