Preserve UTF-8 boundaries in DM peer names
This commit is contained in:
1 parent
fa76447f53
commit
d09ed0316f
4 files changed
+235
-8
No files matched your search
+3
-2
@@ -34,6 +34,7 @@ extern "C" {
|
||||
#define DM_MSG_SIG_SIZE 64
|
||||
#define DM_DATA_MAX 1024
|
||||
#define DM_RECEIPT_SIZE 136
|
||||
#define DM_PEER_NAME_MAX 63 /* UTF-8 байты без NUL; сохраняются только целые code points. */
|
||||
|
||||
/* Вычислить полную длину канонического тела из его заголовка.
|
||||
* Возвращает 1 и *out_len, либо 0 если буфер мал/повреждён (выход не меняется).
|
||||
@@ -78,6 +79,7 @@ void dm_core_destroy(struct UTUN_INSTANCE* inst);
|
||||
* ещё нет, выводит conv_id/ключи. Подключение для передачи медиа принадлежит media.
|
||||
* Снимает hidden без смены поколения; публикует CONV_UPDATED с текущим поколением.
|
||||
* Ключи обязательны, peer_name/source_ch_id могут быть NULL; переданные ключи пира проверяет вызывающий.
|
||||
* Имя ограничено DM_PEER_NAME_MAX байтами по границе UTF-8; некорректный суффикс отбрасывается с WARN.
|
||||
* Возвращает 0 при успехе, <0 при ошибке.
|
||||
* Отказ чтения/проверки ключей не создаёт беседу, не меняет её поля/hidden и не выдаёт CONV_UPDATED.
|
||||
* Создание разрешено только после успешного SELECT без строки; существующие seq сохраняются. */
|
||||
@@ -104,8 +106,7 @@ void dm_cancel_pending_history(struct UTUN_INSTANCE* inst, const char* conv);
|
||||
|
||||
/* До 200 видимых бесед по last_ts DESC: [{conv_id,peer_node_id,peer_name,last_ts,out_seq,in_seq,generation}].
|
||||
* buf вмещает JSON и NUL; 0 и *out_len без NUL при успехе, -1 при ошибке. Все вызовы в uasync.
|
||||
* Известный дефект: имя может быть обрезано внутри UTF-8 в dm_start/load, и результат с кодом0 будет
|
||||
* некорректным UTF-8 JSON. См. doc/dm_audit_findings.txt, раздел8. */
|
||||
* Имя из БД либо nodes нормализуется по правилам dm_start; снимок не меняет сохранённые строки. */
|
||||
int dm_list_conversations_json(struct UTUN_INSTANCE* inst, char* buf, size_t buf_size, size_t* out_len);
|
||||
|
||||
/* Сообщения беседы в JSON: расшифрованное содержимое, статусы доставки и медиа.
|
||||
|
||||
Reference in new issue
Block a user