mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
receive_imf: trim() "Chat-Group-Name{,-Changed}:" headers content (#3650)
It's a w/a for "Space added before long group names after MIME serialization/deserialization" issue. DC itself never creates group names with leading/trailing whitespace, so it can be safely removed. On the sender side there's no trim() because group names anyway go through improve_single_line_input(). And I believe we should send the exact name we have in our db. Also there's no check for leading/trailing whitespace because there may be existing user databases with group names having such whitespaces.
This commit is contained in:
@@ -25,6 +25,7 @@
|
|||||||
- fix detection of "All mail", "Trash", "Junk" etc folders. #3760
|
- fix detection of "All mail", "Trash", "Junk" etc folders. #3760
|
||||||
- fetch messages sequentially to fix reactions on partially downloaded messages #3688
|
- fetch messages sequentially to fix reactions on partially downloaded messages #3688
|
||||||
- Fix a bug where one malformed message blocked receiving any further messages #3769
|
- Fix a bug where one malformed message blocked receiving any further messages #3769
|
||||||
|
- strip leading/trailing whitespace from "Chat-Group-Name{,-Changed}:" headers content #3650
|
||||||
|
|
||||||
|
|
||||||
## 1.101.0
|
## 1.101.0
|
||||||
|
|||||||
@@ -405,6 +405,29 @@ def test_forward_own_message(acfactory, lp):
|
|||||||
assert msg_in.is_forwarded()
|
assert msg_in.is_forwarded()
|
||||||
|
|
||||||
|
|
||||||
|
def test_long_group_name(acfactory, lp):
|
||||||
|
"""See bug https://github.com/deltachat/deltachat-core-rust/issues/3650 "Space added before long
|
||||||
|
group names after MIME serialization/deserialization".
|
||||||
|
|
||||||
|
When the mailadm bot creates a group with botadmin, the bot creates is as
|
||||||
|
"pytest-supportuser-282@x.testrun.org support group" (for example). But in the botadmin's
|
||||||
|
account object, the group chat is called " pytest-supportuser-282@x.testrun.org support group"
|
||||||
|
(with an additional space character in the beginning).
|
||||||
|
"""
|
||||||
|
ac1, ac2 = acfactory.get_online_accounts(2)
|
||||||
|
|
||||||
|
lp.sec("ac1: creating group chat and sending a message")
|
||||||
|
group_name = "pytest-supportuser-282@x.testrun.org support group"
|
||||||
|
group = ac1.create_group_chat(group_name)
|
||||||
|
group.add_contact(ac2)
|
||||||
|
group.send_text("message")
|
||||||
|
|
||||||
|
# wait for other account to receive
|
||||||
|
ev = ac2._evtracker.get_matching("DC_EVENT_INCOMING_MSG")
|
||||||
|
msg_in = ac2.get_message_by_id(ev.data2)
|
||||||
|
assert msg_in.chat.get_name() == group_name
|
||||||
|
|
||||||
|
|
||||||
def test_send_self_message(acfactory, lp):
|
def test_send_self_message(acfactory, lp):
|
||||||
ac1 = acfactory.new_online_configuring_account(mvbox_move=True)
|
ac1 = acfactory.new_online_configuring_account(mvbox_move=True)
|
||||||
acfactory.bring_accounts_online()
|
acfactory.bring_accounts_online()
|
||||||
|
|||||||
@@ -1510,7 +1510,10 @@ async fn create_or_lookup_group(
|
|||||||
|
|
||||||
let grpname = mime_parser
|
let grpname = mime_parser
|
||||||
.get_header(HeaderDef::ChatGroupName)
|
.get_header(HeaderDef::ChatGroupName)
|
||||||
.context("Chat-Group-Name vanished")?;
|
.context("Chat-Group-Name vanished")?
|
||||||
|
// W/a for "Space added before long group names after MIME serialization/deserialization
|
||||||
|
// #3650" issue. DC itself never creates group names with leading/trailing whitespace.
|
||||||
|
.trim();
|
||||||
let new_chat_id = ChatId::create_multiuser_record(
|
let new_chat_id = ChatId::create_multiuser_record(
|
||||||
context,
|
context,
|
||||||
Chattype::Group,
|
Chattype::Group,
|
||||||
@@ -1618,9 +1621,15 @@ async fn apply_group_changes(
|
|||||||
{
|
{
|
||||||
better_msg = Some(stock_str::msg_add_member(context, &added_member, from_id).await);
|
better_msg = Some(stock_str::msg_add_member(context, &added_member, from_id).await);
|
||||||
recreate_member_list = true;
|
recreate_member_list = true;
|
||||||
} else if let Some(old_name) = mime_parser.get_header(HeaderDef::ChatGroupNameChanged) {
|
} else if let Some(old_name) = mime_parser
|
||||||
|
.get_header(HeaderDef::ChatGroupNameChanged)
|
||||||
|
// See create_or_lookup_group() for explanation
|
||||||
|
.map(|s| s.trim())
|
||||||
|
{
|
||||||
if let Some(grpname) = mime_parser
|
if let Some(grpname) = mime_parser
|
||||||
.get_header(HeaderDef::ChatGroupName)
|
.get_header(HeaderDef::ChatGroupName)
|
||||||
|
// See create_or_lookup_group() for explanation
|
||||||
|
.map(|grpname| grpname.trim())
|
||||||
.filter(|grpname| grpname.len() < 200)
|
.filter(|grpname| grpname.len() < 200)
|
||||||
{
|
{
|
||||||
if chat_id
|
if chat_id
|
||||||
|
|||||||
Reference in New Issue
Block a user