Re: [libgadu-devel] Pole client_name

2011-03-18 Thread Rafał Malinowski
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

2011-03-06 Thread Rafał Malinowski
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

2011-03-03 Thread Rafał Malinowski
> 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

2011-02-28 Thread Wojtek Kaniewski
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

2011-02-28 Thread Rafał Malinowski
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