From: Art Cancro Date: Sun, 10 Jul 2022 23:23:01 +0000 (-0400) Subject: Convert RFC2047-encoded strings to UTF8 before display X-Git-Tag: v958~54 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=c69cd2b93ca36995ca7ddd3976caa101fb9f717b;p=citadel.git Convert RFC2047-encoded strings to UTF8 before display --- diff --git a/citadel/server/internet_addressing.c b/citadel/server/internet_addressing.c index 5acf8b781..31e3fe2d8 100644 --- a/citadel/server/internet_addressing.c +++ b/citadel/server/internet_addressing.c @@ -1347,8 +1347,9 @@ char *harvest_collected_addresses(struct CtdlMessage *msg) { if (!CM_IsEmpty(msg, field)) { for (j=0; jcm_fields[field], ','); ++j) { extract_token(addr, msg->cm_fields[field], j, ',', sizeof addr); - if (strstr(addr, "=?") != NULL) + if (strstr(addr, "=?") != NULL) { utf8ify_rfc822_string(addr); + } process_rfc822_addr(addr, user, node, name); h = CtdlHostAlias(node); if (h != hostalias_localhost) { diff --git a/webcit-ng/forum_view.c b/webcit-ng/forum_view.c index 591e5fc55..90ef33746 100644 --- a/webcit-ng/forum_view.c +++ b/webcit-ng/forum_view.c @@ -44,6 +44,7 @@ void json_render_one_message(struct http_transaction *h, struct ctdlsession *c, JsonObjectAppend(j, NewJsonNumber(HKEY("msgnum"), msgnum)); while ((ctdl_readline(c, buf, sizeof(buf)) >= 0) && (strcmp(buf, "text")) && (strcmp(buf, "000"))) { + utf8ify_rfc822_string(&buf[5]); // citadel header parsing here if (!strncasecmp(buf, "from=", 5)) { diff --git a/webcit-ng/room_functions.c b/webcit-ng/room_functions.c index 48701159d..bafb7c9dd 100644 --- a/webcit-ng/room_functions.c +++ b/webcit-ng/room_functions.c @@ -83,6 +83,7 @@ void json_mailbox(struct http_transaction *h, struct ctdlsession *c) { ctdl_readline(c, buf, sizeof(buf)); if (buf[0] == '1') { while (ctdl_readline(c, buf, sizeof(buf)), (strcmp(buf, "000"))) { + utf8ify_rfc822_string(buf); JsonValue *jmsg = NewJsonObject(HKEY("message")); JsonObjectAppend(jmsg, NewJsonNumber(HKEY("msgnum"), extract_long(buf, 0))); JsonObjectAppend(jmsg, NewJsonNumber(HKEY("time"), extract_long(buf, 1)));