Dnia 2012-06-08, pią o godzinie 11:18 +0200, Tomasz Wasilczyk pisze:
> chcę zaimplementować obsługę proxy dla gadu-gadu w Pidginie. Problem w tym, 
> że:
> - ustawienia proxy w libgadu są globalne dla wszystkich połączeń
> - libgadu nie obsługuje (przynajmniej wg. dokumentacji) wszystkich
> rodzajów proxy, które obsługuje Pidgin

Najwyraźniej nikomu do tej pory nie był potrzebny inny rodzaj proxy. To,
co jest, było dodawane daaawno temu, kiedy pewnie nawet się nie śniło o
więcej niż jednej sesji :)

> Najlepiej by było, jakby libgadu udostępniało możliwość rejestracji
> własnej funkcji nawiązującej połączenia, tak jak to jest zrobione z
> zapytaniami DNS (gg_global_set_custom_resolver). Można by to było
> łatwo zrobić, modyfikując funkcję gg_connect (dlaczego właściwie to
> jest deprecated?), ale ona nie otrzymuje informacji o sesji, w ramach
> której ma zostać użyta.

Jest "deprecated" z punktu widzenia API. Nie chcemy, żeby aplikacje jej
używały i przy którymś podbiciu wersji ABI przestanie być widoczna poza
biblioteką.

Pytanie tylko, czego potrzebujesz ze struktury sesji do połączenia.
Pidgin ma jakieś szczególne wymagania przy połączeniach przez proxy? Bo
jeśli zrobić wersję gg_connect(), która dostaje wskaźnik na gg_session,
to co z połączeniami HTTP czy bezpośrednimi?

> Prosiłbym o podpowiedź, co mogę zrobić w tym kierunku. Chętnie
> zaimplementuję obsługę wspomnianych ficzerów, moja propozycja:
> - nowa funkcja gg_connect2 lub gg_connect_proxy, nawiązująca
> połączenie TCP (niezależnie, czy przez proxy czy nie, po prostu
> nawiązuje) z takimi samymi parametrami co gg_connect + wskaźnik na
> strukturę sesji
> - przeniesienie gg_connect do obsolete, implementacja poprzez
> wywołanie gg_connect_proxy z parametrem struktury sesji równym NULL
> - poprawienie wszystkich miejsc, w których jest używane gg_connect
> tak, żeby przekazywały też strukturę sesji

Ogólnie to dobry kierunek, zakładając, że nie będzie to gg_session
(patrz wyżej).

Dobrze by było też, gdyby nowe funkcje manipulujące parametrami proxy
dla sesji zaczynały się od prefiksu gg_session_, tak jak te dla
resolverów, ale to najmniejszy problem i łatwo poprawić nie wywracając
do góry nogami wszystkiego.

> Rozwiązało by to chyba też problem opisany w dokumentacji, że serwer
> pośredniczący nie jest wykorzystywany dla połączeń bezpośrednich.

O tak, tylko dobrze by było dodać jakąś opcję, która mówi, czy serwer
proxy ma być wykorzystywany do połączeń bezpośrednich, czy nie. Jeśli
ktoś używa tego do przesyłania plików w sieci wewnętrznej, powinien móc
się łączyć... no... bezpośrednio? ;)

Pozdr,
Wojtek

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

Reply via email to