C-toxcore: Geben Sie an, dass der Benutzername des Gruppenchat-Peers nicht bekannt ist

Erstellt am 6. Feb. 2018  ·  4Kommentare  ·  Quelle: TokTok/c-toxcore

Wenn im Gruppenchat der Benutzername eines beitretenden Peers nicht bekannt ist, wird eine Zeichenfolge "Tox-Benutzer" zurückgegeben. Soweit mir bekannt ist, gibt Toxcore dazu keine weiteren Hinweise. Das bedeutet, dass Clients niemals vertrauen können, ob der Name des Peers, den sie von toxcore erhalten haben, korrekt ist oder nicht. "Tox-Benutzer" kann ein legitimer Benutzername sein, daher gibt es keine Möglichkeit zu unterscheiden, ob es sich um einen korrekten Namen handelt. Dies erschwert das Erstellen von Beitrittsbenachrichtigungen für Gruppenchats.

Wenn ein Benutzer einem Gruppenchat beitritt, in dem wir uns befinden, sehen wir zunächst seinen Namen als "Tox-Benutzer". Dann wird es wahrscheinlich in ihren richtigen Namen geändert, der TOX_CONFERENCE_STATE_CHANGE_PEER_NAME_CHANGE anruft. Ich weiß nicht, wie Kunden damit umgehen, aber das sollte geändert werden.

in gruppe.c:

/* Copy the name of peer_index who is in groupnumber to name.
 * name must be at least MAX_NAME_LENGTH long.
 *
 * return length of name if success
 * return -1 if groupnumber is invalid.
 * return -2 if peer_index is invalid.
 */
int group_peername(const Group_Chats *g_c, int groupnumber, int peer_index, uint8_t *name)
{
    Group_c *g = get_group_c(g_c, groupnumber);

    if (!g) {
        return -1;
    }

    if (peer_index < 0 || (uint32_t)peer_index >= g->numpeers_in_list) {
        return -2;
    }

    if (g->peers_list[peer_index] == INVALID_PEER_INDEX) {
        return -2;
    }

    Group_Peer *peer = &g->peers[g->peers_list[peer_index]];

    peer->nick_changed = false;

    if (peer->nick_len == 0) {
        memcpy(name, "Tox User", 8);
        return 8;
    }

    memcpy(name, peer->nick, peer->nick_len);
    return peer->nick_len;
}
enhancement

Hilfreichster Kommentar

Wie wäre es mit einer leeren Zeichenfolge anstelle von Tox User ?

Alle 4 Kommentare

Wie wäre es mit einer leeren Zeichenfolge anstelle von Tox User ?

vielleicht irgendwo in dieser richtung:

    if (peer->nick_len == 0) {
        name[0] = '\0';
        return 0;
    }

Es muss einen Standardnamen geben. Wir könnten es auf eine leere Zeichenfolge setzen und Clients entscheiden lassen, wie der Standardname lauten soll, aber dann wird er in jedem Client anders sein.

Es gibt auch ein anderes Problem. Warum wird die Zeichenfolge "Tox-Benutzer" für jeden Peer zurückgegeben, der beitritt und später in den echten Namen des Benutzers geändert wird? Dies muss bedeuten, dass der Name jedes beitretenden Benutzers zunächst leer ist. Wieso den?

Wir könnten es auf eine leere Zeichenfolge setzen und Clients entscheiden lassen, wie der Standardname lauten soll, aber dann wird er in jedem Client anders sein.

Ich denke, es wäre nicht schlecht, den Client den Standardnamen bestimmen zu lassen, qTox hat bereits einen Standardnamen, wenn Sie ein Profil erstellen, es wäre nicht viel Arbeit, einen für Gruppen zu erstellen.

Warum wird die Zeichenfolge "Tox-Benutzer" für jeden Peer zurückgegeben, der beitritt und später in den echten Namen des Benutzers geändert wird?

Vielleicht kommt das Paket mit dem Peer-Namen nach dem Paket, das angibt, dass jemand der Gruppe beigetreten ist? Ich bin mir nicht sicher, was das Protokoll hier sagt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen