Re: [libgadu-devel] Pole client_name
Jakieś postępy w tej materii? ___ libgadu-devel mailing list libgadu-devel@lists.ziew.org http://lists.ziew.org/mailman/listinfo/libgadu-devel
Re: [libgadu-devel] Pole client_name
To może tak. Ilość i nazewnictwo pól z gg_login_params pozostaje takie samo. Kiedy pole client_version jest ustawione jest ono używane jako cała nazwa wersji, kiedy nie jest ustawione, wartości domyślne są wysyłane. W przypadku zapytania do HUBa zawsze wysyłana jest wersja domyślna (GG_DEFAULT_CLIENT_VERSION). Pozdrawiam i czekam na opinie Index: src/handlers.c === --- src/handlers.c (wersja 1059) +++ src/handlers.c (kopia robocza) @@ -160,8 +160,8 @@ if (GG_SESSION_IS_PROTOCOL_8_0(gs)) { struct gg_login80 l80; - const char *version, *descr; - uint32_t version_len, descr_len; + const char *client_name, *version, *descr; + uint32_t client_name_len, version_len, descr_len; memset(&l80, 0, sizeof(l80)); gg_debug_session(gs, GG_DEBUG_MISC, "// gg_watch_fd() sending GG_LOGIN80 packet\n"); @@ -174,9 +174,17 @@ l80.features = gg_fix32(gs->protocol_features); l80.image_size = gs->image_size; l80.dunno2 = 0x64; + + if (gs->client_version != NULL) { + client_name = ""; + client_name_len = 0; + } else { + client_name = GG8_VERSION; + client_name_len = strlen(GG8_VERSION); + } version = (gs->client_version != NULL) ? gs->client_version : GG_DEFAULT_CLIENT_VERSION; - version_len = gg_fix32(strlen(GG8_VERSION) + strlen(version)); + version_len = gg_fix32(client_name_len + strlen(version)); descr = (gs->initial_descr != NULL) ? gs->initial_descr : ""; descr_len = (gs->initial_descr != NULL) ? gg_fix32(strlen(gs->initial_descr)) : 0; @@ -185,7 +193,7 @@ GG_LOGIN80, &l80, sizeof(l80), &version_len, sizeof(version_len), -GG8_VERSION, strlen(GG8_VERSION), +client_name, client_name_len, version, strlen(version), &descr_len, sizeof(descr_len), descr, strlen(descr), Index: src/events.c === --- src/events.c (wersja 1059) +++ src/events.c (kopia robocza) @@ -361,7 +361,7 @@ gg_debug_session(sess, GG_DEBUG_MISC, "// gg_watch_fd() connected to hub, sending query\n"); - if (!(client = gg_urlencode((sess->client_version) ? sess->client_version : GG_DEFAULT_CLIENT_VERSION))) { + if (!(client = gg_urlencode(GG_DEFAULT_CLIENT_VERSION))) { gg_debug_session(sess, GG_DEBUG_MISC, "// gg_watch_fd() out of memory for client version\n"); goto fail_connecting; } ___ libgadu-devel mailing list libgadu-devel@lists.ziew.org http://lists.ziew.org/mailman/listinfo/libgadu-devel
Re: [libgadu-devel] Pole client_name
> Myślałem o tym wcześniej i mam mieszane uczucia. Z jednej strony > moglibyśmy sprawdzać, czy client_version zaczyna się od cyfry. Jeśli > tak, to zachowujemy się tak jak do tej pory i doklejamy "Gadu-Gadu > Client Build ". Jeśli nie, to przekazujemy całość, ale bawimy się w > parsowanie, żeby przesłać wersję do huba. Z drugiej strony nie jest to > najbardziej intuicyjne. Ktoś za, ktoś przeciw? To może inaczej... Zmienić nazwę client_version na client_name i wysyłać pakiet tylko z client_name, client_version będzie puste. Wtedy gg_login_params nie zmieni wielkości ani struktury, a skoro client_name przed http://toxygen.net/websvn/listing.php?repname=libgadu&path=%2F&rev=1055&sc=1 i tak nie działało, to żaden klient nie mógł z tego korzystać. Pozdrawiam Rafał ___ libgadu-devel mailing list libgadu-devel@lists.ziew.org http://lists.ziew.org/mailman/listinfo/libgadu-devel
Re: [libgadu-devel] Pole client_name
W dniu 01.03.2011 00:28, Rafał Malinowski pisze: > Załączam patch, który działa, ale pewnie łamie jakieś zasady wstecznej > kompatybilności ;) > Proszę o wskazówki, jak ich nie łamać. Myślałem o tym wcześniej i mam mieszane uczucia. Z jednej strony moglibyśmy sprawdzać, czy client_version zaczyna się od cyfry. Jeśli tak, to zachowujemy się tak jak do tej pory i doklejamy "Gadu-Gadu Client Build ". Jeśli nie, to przekazujemy całość, ale bawimy się w parsowanie, żeby przesłać wersję do huba. Z drugiej strony nie jest to najbardziej intuicyjne. Ktoś za, ktoś przeciw? Tak czy inaczej, w Twoim patchu brakuje katalogu include. I lepiej IMHO by było, gdyby biblioteka sama doklejała spację między client_name i client_version, bo to, że trzeba dodać spację, nie jest zbyt oczywiste. Pozdr, Wojtek ___ libgadu-devel mailing list libgadu-devel@lists.ziew.org http://lists.ziew.org/mailman/listinfo/libgadu-devel
[libgadu-devel] Pole client_name
Hej. W gg_login_params brakuje pola chat *client_name, które pozwalałoby nam się przedstawiać jako Kadu, a nie jako Gadu Gadu. Aktualnie ustawiamy client_version, i to działa ślicznie. Ale Gadu Gadu 0.6.6 wygląda głupio w oknie multilogowania ;) Załączam patch, który działa, ale pewnie łamie jakieś zasady wstecznej kompatybilności ;) Proszę o wskazówki, jak ich nie łamać. Pozdrawiam Rafał Malinowski Index: src/handlers.c === --- src/handlers.c (wersja 1057) +++ src/handlers.c (kopia robocza) @@ -175,8 +175,9 @@ l80.image_size = gs->image_size; l80.dunno2 = 0x64; + char *client_name = (gs->client_name != NULL) ? gs->client_name : GG8_VERSION; version = (gs->client_version != NULL) ? gs->client_version : GG_DEFAULT_CLIENT_VERSION; - version_len = gg_fix32(strlen(GG8_VERSION) + strlen(version)); + version_len = gg_fix32(strlen(client_name) + strlen(version)); descr = (gs->initial_descr != NULL) ? gs->initial_descr : ""; descr_len = (gs->initial_descr != NULL) ? gg_fix32(strlen(gs->initial_descr)) : 0; @@ -185,7 +186,7 @@ GG_LOGIN80, &l80, sizeof(l80), &version_len, sizeof(version_len), -GG8_VERSION, strlen(GG8_VERSION), +client_name, strlen(client_name), version, strlen(version), &descr_len, sizeof(descr_len), descr, strlen(descr), Index: src/libgadu.c === --- src/libgadu.c (wersja 1057) +++ src/libgadu.c (kopia robocza) @@ -807,6 +807,7 @@ sess->protocol_flags |= GG_ERA_OMNIX_MASK; if (p->has_audio) sess->protocol_flags |= GG_HAS_AUDIO_MASK; + sess->client_name = (p->client_name) ? strdup(p->client_name) : NULL; sess->client_version = (p->client_version) ? strdup(p->client_version) : NULL; sess->last_sysmsg = p->last_sysmsg; sess->image_size = p->image_size; @@ -1128,6 +1129,7 @@ free(sess->password); free(sess->initial_descr); + free(sess->client_name); free(sess->client_version); free(sess->header_buf); ___ libgadu-devel mailing list libgadu-devel@lists.ziew.org http://lists.ziew.org/mailman/listinfo/libgadu-devel