Cześć,

Próbowałem poprawić dzisiaj błąd w Kadu na Windows polegający na tym,
że próba wysłania dużej wiadomości (u mnie to było około 400 znaków) w
dużej konferencji (10 osób) kończyła się niepowodzeniem. Co ciekawe,
podczas używania wersji Kadu z oknem terminala, na którym wypisywane
było wyjście diagnostyczne libgadu, błąd nie występował. Doszedłem w
końcu do tego, że send() w gg_write_common() podczas wysyłania szóstej
czy siódmej kopii wiadomości nie wyrabia, zwraca -1 i ustawia errno na
EAGAIN - chyba że libgadu wypisuje jeszcze coś na terminal, czym
zarabia trochę czasu. Przez to gg_send_packet() uznaje, że operacja
się nie powiodła i wiadomość faktycznie nie zostaje w całości wysłana.
Zrobienie najprostszej rzeczy, czyli obsługi EAGAIN w pętli w
gg_write_common() naprawiło problem.

Tak sobie myślę, że gg_send_packet() powinno obsługiwać EAGAIN,
prawda? Czy też powinno to się dziać na innym poziomie?

Pozdrawiam,
Bartosz
_______________________________________________
libgadu-devel mailing list
libgadu-devel@lists.ziew.org
http://lists.ziew.org/mailman/listinfo/libgadu-devel

Reply via email to