[ekg2-devel] Nieprawidłowe nawiązywanie rozmów z kontaktami.

Michał Kazior kazikcz w gmail.com
Nie, 17 Lut 2008, 20:28:13 CET


Przedwczoraj postanowiłem sprawdzić Ekg2. Pamiętam, że wcześniejsze
wersje miały dość sporo problemów z kontami jabbera na gmail-u, ale
teraz wszystko chodzi ładnie. Dobra robota!

Niestety, ku mojemu zaskoczeniu, pojawiły się dziwne problemu, których
wcześniej nie miałem nawet jak dostrzec.


Problem 1.
  Posiadam na liście kontaktów (jabber) kilka osób, które mają takie
same nicki. Wynika to z tego, że część osób mam podwójnie/potrójnie,
gdyż używają kilku protokołow (gg/jabber/tlen).
  Jeżeli taka osoba zainicjuje ze mną rozmowę, to rozmowa tak naprawdę
zacznie się z pierwszym lepszym UID o takim samym nicku. Wygląda to
następująco: kumpel z GG pisze do mnie, a ja mu zaczynam odpowiadać na
Jabbera (mimo że on tam nawet nie jest zalogowany). Szczegółowe
informacje na statusbar informują o rozmowie z kontem Jabberowym.
  Nie sądzę, żeby zmiana nazw kontaktów była sensowna. To jedynie
ominięcie problemu, a nie jego rozwiązanie.

Problem 2.
  Jeżeli rozpocznę rozmowę z samym sobą (z Gajim do Ekg2), to
osoba, która w najbliższym czasie zmieni swój status (w Ekg2) zostanie
`wsadzona' jako rozmówca w okno rozmowy z samym sobą (z Gajim).
Następne próby komunikacji z samym sobą (Gajim->Ekg2) będą tworzyć
następne okna, które będą kolejno zajmowane przez dość losowe
kontakty. Próba odpowiedzi (Ekg2->Gajim) na zmutowanym oknie będzie
wysyłać wiadomości do `wylosowanego' uprzednio kontaktu.
  Co prawda, nie jest to jakiś straszny problem, niemniej jednak
wskazuje na to, że coś jest nie tak.


Pozwoliłem sobie zajrzeć do źródeł w poszukiwaniu odpowiedzi i byćmoże
rozwiązania tych problemów. Udało mi się ustalić (nie wiem czy
poprawnie), że wina leży w konstrukcji window_t, która jako
identyfikator rozmowy przyjmuje nick kontaktu. Myslę, że w tym miejscu
powinien znaleźć się UID, który jest unikalny i pozwala na
jednoznaczne określenie rozmówcy.

Niestety nie mam pomysłu jak konkretnie możnaby to poprawić. Starałem
się coś wymyślić, ale wygląda na to, że wymagałoby to chyba troche
więcej zmian. Rozdział target/uin jest dla mnie niejasny. Niektórym
funkcjom jakby pasowało i jedno, i drugie, a innym tylko jedno z tych
dwóch. Zatem wsadzenie w window_t->target identyfikatora raczej nie
załatwi sprawy. A może się mylę ?


Pozdrawiam.


Więcej informacji o liście dyskusyjnej ekg2-devel