From libgadu-commit at lists.ziew.org Fri May 8 00:28:23 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 8 May 2009 00:28:23 +0200 (CEST) Subject: [libgadu-commit] r712 - branches/new-api/examples Message-ID: <20090507222823.BC9A217B6E@toxygen.net> Author: wojtekka Date: 2009-05-08 00:28:23 +0200 (Fri, 08 May 2009) New Revision: 712 Modified: branches/new-api/examples/conn-async.c branches/new-api/examples/send.c Log: Poprawki przyk?ad?w. Modified: branches/new-api/examples/conn-async.c =================================================================== --- branches/new-api/examples/conn-async.c 2009-04-16 00:52:47 UTC (rev 711) +++ branches/new-api/examples/conn-async.c 2009-05-07 22:28:23 UTC (rev 712) @@ -93,8 +93,7 @@ if (ge->type == GG_EVENT_CONN_SUCCESS) { printf("Po??czono z serwerem.\n"); - gg_event_free(ge); - break; + gg_notify(gs, NULL, 0); } if (ge->type == GG_EVENT_CONN_FAILED) { @@ -104,6 +103,10 @@ return 1; } + if (ge->type == GG_EVENT_MSG) { + printf("%d \"%s\" \"%s\"\n", ge->event.msg.sender, ge->event.msg.message, ge->event.msg.xhtml_message); + } + gg_event_free(ge); } } Modified: branches/new-api/examples/send.c =================================================================== --- branches/new-api/examples/send.c 2009-04-16 00:52:47 UTC (rev 711) +++ branches/new-api/examples/send.c 2009-05-07 22:28:23 UTC (rev 712) @@ -43,7 +43,7 @@ return 1; } - if (gg_send_message(gs, GG_CLASS_MSG, atoi(argv[3]), (unsigned char*) argv[4]) == -1) { + if (gg_send_message(gs, GG_CLASS_CHAT, atoi(argv[3]), (unsigned char*) argv[4]) == -1) { perror("gg_send_message"); gg_session_free(gs); return 1; From libgadu-commit at lists.ziew.org Fri May 8 00:29:09 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 8 May 2009 00:29:09 +0200 (CEST) Subject: [libgadu-commit] r713 - in branches/new-api: include src Message-ID: <20090507222909.0A17617B6E@toxygen.net> Author: wojtekka Date: 2009-05-08 00:29:08 +0200 (Fri, 08 May 2009) New Revision: 713 Modified: branches/new-api/include/libgadu.h.in branches/new-api/src/message.c Log: Domy?lna klasa wiadomo?ci. Eksport API wiadomo?ci. Modified: branches/new-api/include/libgadu.h.in =================================================================== --- branches/new-api/include/libgadu.h.in 2009-05-07 22:28:23 UTC (rev 712) +++ branches/new-api/include/libgadu.h.in 2009-05-07 22:29:08 UTC (rev 713) @@ -653,6 +653,25 @@ int gg_session_import_contacts(struct gg_session *gs); void gg_session_free(struct gg_session *gs); +gg_message_t *gg_message_new(void); +void gg_message_free(gg_message_t *gm); +int gg_message_set_auto_convert(gg_message_t *gm, int auto_convert); +int gg_message_get_auto_convert(gg_message_t *gm); +int gg_message_set_recipients(gg_message_t *gm, const uin_t *recipients, unsigned int recipient_count); +int gg_message_set_recipient(gg_message_t *gm, uin_t recipient); +int gg_message_get_recipients(gg_message_t *gm, const uin_t **recipients, unsigned int *recipient_count); +uin_t gg_message_recipient(gg_message_t *gm); +int gg_message_set_class(gg_message_t *gm, uint32_t msgclass); +uint32_t gg_message_get_class(gg_message_t *gm); +int gg_message_set_seq(gg_message_t *gm, uint32_t seq); +uint32_t gg_message_get_seq(gg_message_t *gm); +int gg_message_set_text(gg_message_t *gm, const char *text); +const char *gg_message_get_text(gg_message_t *gm); +int gg_message_set_html(gg_message_t *gm, const char *html); +const char *gg_message_get_html(gg_message_t *gm); +int gg_message_set_attributes(gg_message_t *gm, const char *attributes, size_t length); +int gg_message_get_attributes(gg_message_t *gm, const char **attributes, size_t *attributes_length); + struct gg_session *gg_login(const struct gg_login_params *p); void gg_free_session(struct gg_session *sess); void gg_logoff(struct gg_session *sess); Modified: branches/new-api/src/message.c =================================================================== --- branches/new-api/src/message.c 2009-05-07 22:28:23 UTC (rev 712) +++ branches/new-api/src/message.c 2009-05-07 22:29:08 UTC (rev 713) @@ -16,6 +16,7 @@ memset(gm, 0, sizeof(gg_message_t)); + gm->msgclass = GG_CLASS_CHAT; gm->seq = (uint32_t) -1; return gm; From libgadu-commit at lists.ziew.org Fri May 8 00:30:11 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 8 May 2009 00:30:11 +0200 (CEST) Subject: [libgadu-commit] r714 - in branches/new-api: src test/packet Message-ID: <20090507223011.2CCFB17B6E@toxygen.net> Author: wojtekka Date: 2009-05-08 00:30:10 +0200 (Fri, 08 May 2009) New Revision: 714 Modified: branches/new-api/src/libgadu.c branches/new-api/test/packet/packet.c Log: Poprawka odbierania pakiet?w rozbitych na kilka odczyt?w. Uwzgl?dnienie by?ego b??du w testach. Modified: branches/new-api/src/libgadu.c =================================================================== --- branches/new-api/src/libgadu.c 2009-05-07 22:29:08 UTC (rev 713) +++ branches/new-api/src/libgadu.c 2009-05-07 22:30:10 UTC (rev 714) @@ -445,7 +445,7 @@ if (errno == EAGAIN) { gg_debug_session(sess, GG_DEBUG_MISC, "// gg_recv_packet() header recv() incomplete header received\n"); - goto failure; + return NULL; } gg_debug_session(sess, GG_DEBUG_MISC, "// gg_recv_packet() header recv() failed: errno=%d, %s\n", errno, strerror(errno)); @@ -487,8 +487,6 @@ if (chunk_ptr == header_buf) memcpy(sess->recv_buf, header_buf, sizeof(struct gg_header)); - printf("%p, %p, %p\n", sess->recv_buf, header_buf, head); - head = (struct gg_header *) sess->recv_buf; if (gg_fix32(head->length) == 0) Modified: branches/new-api/test/packet/packet.c =================================================================== --- branches/new-api/test/packet/packet.c 2009-05-07 22:29:08 UTC (rev 713) +++ branches/new-api/test/packet/packet.c 2009-05-07 22:30:10 UTC (rev 714) @@ -45,12 +45,19 @@ { "", -1, EINTR }, { "\x00\x00\x00\x00", 4 }, - { "\x08\x00\x00\x00\x00\x00\x00\x01", 8 }, + { "\x08\x00\x00\x00", 4 }, + { "", -1, EAGAIN }, + { "\x04\x00\x00\x00", 4 }, + { "", -1, EINTR }, + { "", -1, EAGAIN }, + { "1234", 4 }, - { "\x09\x00\x00\x00", 4 }, + { "\x09\x00\x00\x00\x00\x00\x00\x01", 8 }, + + { "\x0a\x00\x00\x00", 4 }, { "", -1, ENOTCONN }, - { "\x0a\x00\x00\x00\xff\x00\x00\x00", 8 }, + { "\x0b\x00\x00\x00\xff\x00\x00\x00", 8 }, { "VW", 2 }, { "", 0, 0 }, @@ -71,6 +78,7 @@ { 5, 6, "OPQRST" }, { 6, 1, "U" }, { 7, 0, "" }, + { 8, 4, "1234" }, { -1, }, { -1, }, { -1, }, @@ -125,12 +133,15 @@ memset(&gs, 0, sizeof(gs)); gs.fd = 123; - for (i = 0; i < sizeof(output) / sizeof(output[0]); i++) { + for (i = 0; i < sizeof(output) / sizeof(output[0]); ) { struct gg_header *gh; gh = gg_recv_packet(&gs); if (gh == NULL) { + if (errno == EINTR || errno == EAGAIN) + continue; + if (output[i].type != -1) { fprintf(stderr, "gg_recv_packet: Returned error (%s), expected success\n", strerror(errno)); return 1; @@ -162,6 +173,8 @@ free(gh); } + + i++; } fprintf(stderr, "Test succeeded.\n"); From libgadu-commit at lists.ziew.org Fri May 8 00:32:02 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 8 May 2009 00:32:02 +0200 (CEST) Subject: [libgadu-commit] r715 - branches/new-api/src Message-ID: <20090507223202.14ABA17B6E@toxygen.net> Author: wojtekka Date: 2009-05-08 00:32:01 +0200 (Fri, 08 May 2009) New Revision: 715 Modified: branches/new-api/src/events.c Log: Uproszczenie obs?ugi timeout?w -- niezale?nie od rodzaju, wystarczy ustawi? timeout na 0 i zawo?a? gg_watch_fd(). Dzi?ki temu odpada konieczno?? u?ywania soft_timeout. Modified: branches/new-api/src/events.c =================================================================== --- branches/new-api/src/events.c 2009-05-07 22:30:10 UTC (rev 714) +++ branches/new-api/src/events.c 2009-05-07 22:32:01 UTC (rev 715) @@ -1242,6 +1242,11 @@ return NULL; } + if (sess->timeout == 0 && !sess->soft_timeout) { + errno = ETIMEDOUT; + return NULL; + } + if (!(e = (void*) calloc(1, sizeof(*e)))) { gg_debug_session(sess, GG_DEBUG_MISC, "// gg_watch_fd() not enough memory for event data\n"); return NULL; From libgadu-commit at lists.ziew.org Sat May 23 10:52:02 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sat, 23 May 2009 10:52:02 +0200 (CEST) Subject: [libgadu-commit] r716 - trunk/docs Message-ID: <20090523085202.6223D17B4A@toxygen.net> Author: wojtekka Date: 2009-05-23 10:52:01 +0200 (Sat, 23 May 2009) New Revision: 716 Modified: trunk/docs/protocol.html Log: Dok?adniejszy opis hashowania SHA-1. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-07 22:32:01 UTC (rev 715) +++ trunk/docs/protocol.html 2009-05-23 08:52:01 UTC (rev 716) @@ -311,9 +311,26 @@ prawdopodobie?stwo, ?e inne has?o przy odpowiednim ziarnie da taki sam wynik. Z tego powodu zalecane jest u?ywane algorytmu SHA-1, kt?rego implementacje -s? dost?pne dla wi?kszo?ci wsp??czesnych system?w operacyjnych. +s? dost?pne dla wi?kszo?ci wsp??czesnych system?w operacyjnych. Skr?t SHA-1 +nale?y obliczy? z po??czenia has?a (bez \0) i binarnej reprezentacji +ziarna. Przyk?adowy kod mo?e wygl?da? w nast?puj?cy spos?b:

+
+
char *gg_sha_hash(char *password, unsigned int seed)
+{
+	SHA1_CTX ctx;
+	static char result[20];
+	  
+	SHA1_Init(&ctx);  
+	SHA1_Update(&ctx, password, strlen(password));
+	SHA1_Update(&ctx, &seed, sizeof(seed));
+	SHA1_Final(result, &ctx);
+
+	return result;
+}
+
+

Je?li autoryzacja si? powiedzie, dostaniemy w odpowiedzi pakiet:

From libgadu-commit at lists.ziew.org Sat May 23 13:21:31 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sat, 23 May 2009 13:21:31 +0200 (CEST) Subject: [libgadu-commit] r717 - in trunk: include src Message-ID: <20090523112132.07F3117B4A@toxygen.net> Author: darkjames Date: 2009-05-23 13:21:31 +0200 (Sat, 23 May 2009) New Revision: 717 Modified: trunk/include/libgadu.h.in trunk/src/libgadu.c Log: Poprawka maski GG_S() Modified: trunk/include/libgadu.h.in =================================================================== --- trunk/include/libgadu.h.in 2009-05-23 08:52:01 UTC (rev 716) +++ trunk/include/libgadu.h.in 2009-05-23 11:21:31 UTC (rev 717) @@ -1495,7 +1495,7 @@ #define GG_S_F(x) (((x) & GG_STATUS_FRIENDS_MASK) != 0) /* GG_S() stan bez uwzgl?dnienia trybu tylko dla znajomych */ -#define GG_S(x) ((x) & ~GG_STATUS_FRIENDS_MASK) +#define GG_S(x) ((x) & ~(GG_STATUS_FRIENDS_MASK | GG_STATUS_VOICE_MASK)) /* GG_S_A() dost?pny */ #define GG_S_A(x) (GG_S(x) == GG_STATUS_AVAIL || GG_S(x) == GG_STATUS_AVAIL_DESCR) Modified: trunk/src/libgadu.c =================================================================== --- trunk/src/libgadu.c 2009-05-23 08:52:01 UTC (rev 716) +++ trunk/src/libgadu.c 2009-05-23 11:21:31 UTC (rev 717) @@ -959,7 +959,7 @@ gg_debug_session(sess, GG_DEBUG_FUNCTION, "** gg_logoff(%p);\n", sess); - if (GG_S_NA(sess->status & ~GG_STATUS_FRIENDS_MASK)) + if (GG_S_NA(sess->status)) gg_change_status(sess, GG_STATUS_NOT_AVAIL); #ifdef GG_CONFIG_HAVE_OPENSSL From libgadu-commit at lists.ziew.org Sat May 23 17:58:09 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sat, 23 May 2009 17:58:09 +0200 (CEST) Subject: [libgadu-commit] r718 - branches/new-api/examples Message-ID: <20090523155809.E043617B4A@toxygen.net> Author: wojtekka Date: 2009-05-23 17:58:09 +0200 (Sat, 23 May 2009) New Revision: 718 Modified: branches/new-api/examples/httphash.c Log: Dodanie testu SHA-1. Modified: branches/new-api/examples/httphash.c =================================================================== --- branches/new-api/examples/httphash.c 2009-05-23 11:21:31 UTC (rev 717) +++ branches/new-api/examples/httphash.c 2009-05-23 15:58:09 UTC (rev 718) @@ -8,6 +8,21 @@ char buf[100]; int i; + if (argc == 4 && !strcmp(argv[1], "-l")) { + unsigned long seed; + uint8_t hash[20]; + + seed = strtoul(argv[2], NULL, 0); + gg_login_hash_sha1(argv[3], seed, hash); + + for (i = 0; i < 20; i++) + printf("%02x ", hash[i]); + + printf("\n"); + + return 0; + } + if (argc > 2 && !strcmp(argv[1], "-b")) { int count = argc - 3; uint32_t val = atoi(argv[2]); From libgadu-commit at lists.ziew.org Sat May 23 18:03:38 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sat, 23 May 2009 18:03:38 +0200 (CEST) Subject: [libgadu-commit] r719 - branches/new-api/src Message-ID: <20090523160338.72B1617B4A@toxygen.net> Author: wojtekka Date: 2009-05-23 18:03:37 +0200 (Sat, 23 May 2009) New Revision: 719 Modified: branches/new-api/src/dcc7.c branches/new-api/src/events.c branches/new-api/src/http.c branches/new-api/src/resolver.c branches/new-api/src/session.c Log: Usuni?cie warunku != NULL przed free(). R?czny merge r711 z poprawkami. Modified: branches/new-api/src/dcc7.c =================================================================== --- branches/new-api/src/dcc7.c 2009-05-23 15:58:09 UTC (rev 718) +++ branches/new-api/src/dcc7.c 2009-05-23 16:03:37 UTC (rev 719) @@ -396,9 +396,7 @@ return dcc; fail: - if (dcc) - free(dcc); - + free(dcc); return NULL; } @@ -472,9 +470,7 @@ errno = errsv; } - if (dcc) - free(dcc); - + free(dcc); return NULL; } Modified: branches/new-api/src/events.c =================================================================== --- branches/new-api/src/events.c 2009-05-23 15:58:09 UTC (rev 718) +++ branches/new-api/src/events.c 2009-05-23 16:03:37 UTC (rev 719) @@ -1401,16 +1401,12 @@ "\r\n", host, sess->uin, sess->last_sysmsg, client, (auth) ? auth : ""); } - if (auth) - free(auth); - + free(auth); free(client); /* zwolnij pami?? po wersji klienta. */ - if (sess->client_version) { - free(sess->client_version); - sess->client_version = NULL; - } + free(sess->client_version); + sess->client_version = NULL; gg_debug_session(sess, GG_DEBUG_MISC, "=> -----BEGIN-HTTP-QUERY-----\n%s\n=> -----END-HTTP-QUERY-----\n", buf); @@ -1653,8 +1649,7 @@ * write() zawiedzie, sta?o si? co? z?ego. */ if (write(sess->fd, buf, strlen(buf)) < (signed)strlen(buf)) { gg_debug_session(sess, GG_DEBUG_MISC, "// gg_watch_fd() can't send proxy request\n"); - if (auth) - free(auth); + free(auth); goto fail_connecting; } Modified: branches/new-api/src/http.c =================================================================== --- branches/new-api/src/http.c 2009-05-23 15:58:09 UTC (rev 718) +++ branches/new-api/src/http.c 2009-05-23 16:03:37 UTC (rev 719) @@ -99,8 +99,7 @@ hostname = gg_proxy_host; h->port = port = gg_proxy_port; - if (auth) - free(auth); + free(auth); } else { h->query = gg_saprintf("%s %s HTTP/1.0\r\n%s", method, path, header); Modified: branches/new-api/src/resolver.c =================================================================== --- branches/new-api/src/resolver.c 2009-05-23 15:58:09 UTC (rev 718) +++ branches/new-api/src/resolver.c 2009-05-23 16:03:37 UTC (rev 719) @@ -251,9 +251,7 @@ return 0; cleanup: - if (data) - free(data); - + free(data); close(pipes[0]); close(pipes[1]); Modified: branches/new-api/src/session.c =================================================================== --- branches/new-api/src/session.c 2009-05-23 15:58:09 UTC (rev 718) +++ branches/new-api/src/session.c 2009-05-23 16:03:37 UTC (rev 719) @@ -735,11 +735,9 @@ gs->fd = -1; } - if (gs->send_buf) { - free(gs->send_buf); - gs->send_buf = NULL; - gs->send_left = 0; - } + free(gs->send_buf); + gs->send_buf = NULL; + gs->send_left = 0; gs->state = GG_STATE_IDLE; @@ -1193,8 +1191,7 @@ while (gs->images != NULL) gg_image_queue_remove(gs, gs->images, 1); - if (gs->send_buf != NULL) - free(gs->send_buf); + free(gs->send_buf); for (dcc = gs->dcc7_list; dcc != NULL; dcc = dcc->next) dcc->sess = NULL; From libgadu-commit at lists.ziew.org Sat May 23 18:29:17 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sat, 23 May 2009 18:29:17 +0200 (CEST) Subject: [libgadu-commit] r720 - in trunk: include src Message-ID: <20090523162917.7FAEC17B4A@toxygen.net> Author: wojtekka Date: 2009-05-23 18:29:17 +0200 (Sat, 23 May 2009) New Revision: 720 Modified: trunk/include/libgadu.h.in trunk/src/events.c Log: Przekazywanie potwierdzenia odebrania statusu niedost?pnego z opisem (GG_EVENT_DISCONNECT_ACK). Modified: trunk/include/libgadu.h.in =================================================================== --- trunk/include/libgadu.h.in 2009-05-23 16:03:37 UTC (rev 719) +++ trunk/include/libgadu.h.in 2009-05-23 16:29:17 UTC (rev 720) @@ -639,7 +639,8 @@ GG_EVENT_DCC7_DONE, /**< Zako?czono po??czenie bezpo?rednie (7.x) */ GG_EVENT_DCC7_PENDING, /**< Trwa pr?ba po??czenia bezpo?redniego (7.x), nowy deskryptor */ - GG_EVENT_XML_EVENT /**< Otrzymano komunikat systemowy (7.7) */ + GG_EVENT_XML_EVENT, /**< Otrzymano komunikat systemowy (7.7) */ + GG_EVENT_DISCONNECT_ACK, /**< \brief Potwierdzenie zako?czenia sesji. Informuje o tym, ?e zmiana stanu na niedost?pny z opisem dotar?a do serwera i mo?na zako?czy? po??czenie TCP. */ }; #define GG_EVENT_SEARCH50_REPLY GG_EVENT_PUBDIR50_SEARCH_REPLY @@ -1810,6 +1811,8 @@ #define GG_DISCONNECTING 0x000b +#define GG_DISCONNECT_ACK 0x000d + #define GG_USERLIST_REQUEST 0x0016 #define GG_XML_EVENT 0x0027 Modified: trunk/src/events.c =================================================================== --- trunk/src/events.c 2009-05-23 16:03:37 UTC (rev 719) +++ trunk/src/events.c 2009-05-23 16:29:17 UTC (rev 720) @@ -985,6 +985,13 @@ break; } + case GG_DISCONNECT_ACK: + { + gg_debug_session(sess, GG_DEBUG_MISC, "// gg_watch_fd_connected() received disconnection acknowledge\n"); + e->type = GG_EVENT_DISCONNECT_ACK; + break; + } + case GG_XML_EVENT: { gg_debug_session(sess, GG_DEBUG_MISC, "// gg_watch_fd_connected() received XML event\n"); From libgadu-commit at lists.ziew.org Sat May 23 18:30:26 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sat, 23 May 2009 18:30:26 +0200 (CEST) Subject: [libgadu-commit] r721 - trunk/docs Message-ID: <20090523163026.36BE017B4A@toxygen.net> Author: wojtekka Date: 2009-05-23 18:30:25 +0200 (Sat, 23 May 2009) New Revision: 721 Modified: trunk/docs/protocol.html Log: Zmiana GG_DISCONNECTING2 na GG_DISCONNECT_ACK. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-23 16:29:17 UTC (rev 720) +++ trunk/docs/protocol.html 2009-05-23 16:30:25 UTC (rev 721) @@ -886,17 +886,16 @@

W nowych wersjach protoko?u (prawdopodobnie od 0x29), po wys?aniu -pakietu zmieniaj?cego status na niedost?pny, serwer mo?e przys?a? pakiet: +pakietu zmieniaj?cego status na niedost?pny, serwer przysy?a pakiet:

-
#define GG_DISCONNECTING2 0x000d
+
#define GG_DISCONNECT_ACK 0x000d

-Prawdopodobnie jest to potwierdzenie, ?e serwer odebra? pakiet zmiany stanu -i klient mo?e zako?czy? po??czenie maj?c pewno??, ?e zostanie ustawiony -??dany opis. +Jest to potwierdzenie, ?e serwer odebra? pakiet zmiany stanu i klient mo?e +zako?czy? po??czenie maj?c pewno??, ?e zostanie ustawiony ??dany opis.


@@ -1202,7 +1201,7 @@ 0x000aGG_RECV_MSGPrzychodz?ca wiadomo?? przed GG 8.0 0x000bGG_DISCONNECTINGZerwanie po??czenia 0x000cGG_NOTIFY_REPLYStan listy kontakt?w przed GG 6.0 -0x000dGG_DISCONNECTING2Zerwanie po??czenia po zmianie stanu na niedost?pny +0x000dGG_DISCONNECT_ACKZerwanie po??czenia po zmianie stanu na niedost?pny 0x000eGG_PUBDIR50_REPLYOdpowied? katalogu publicznego 0x000fGG_STATUS60Zmiana stanu przed GG 7.7 0x0010GG_USERLIST_REPLYOdpowied? listy kontakt?w na serwerze przed nowym Gadu-Gadu @@ -1901,7 +1900,7 @@
  • Jakub Zawadzki (darkjames%darkjames.ath.cx): nowo?ci w 7.x i 8.x.
  • Krystian Ko?odziej (krystiankolodziej%gmail.com): znaczenie - GG_DISCONNECTING2.
  • + GG_DISCONNECT_ACK.
    From libgadu-commit at lists.ziew.org Wed May 27 18:20:46 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Wed, 27 May 2009 18:20:46 +0200 (CEST) Subject: [libgadu-commit] r722 - in trunk: docs include Message-ID: <20090527162046.0A42B17B48@toxygen.net> Author: darkjames Date: 2009-05-27 18:20:45 +0200 (Wed, 27 May 2009) New Revision: 722 Modified: trunk/docs/protocol.html trunk/include/libgadu.h.in Log: Dodanie nowych stan?w. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-23 16:30:25 UTC (rev 721) +++ trunk/docs/protocol.html 2009-05-27 16:20:45 UTC (rev 722) @@ -379,10 +379,14 @@ EtykietaWarto??Znaczenie GG_STATUS_NOT_AVAIL0x0001Niedost?pny GG_STATUS_NOT_AVAIL_DESCR0x0015Niedost?pny (z opisem) +GG_STATUS_FFC0x0017PoGGadaj ze mn? +GG_STATUS_FFC_DESCR0x0018PoGGadaj ze mn? (z opisem) GG_STATUS_AVAIL0x0002Dost?pny GG_STATUS_AVAIL_DESCR0x0004Dost?pny (z opisem) GG_STATUS_BUSY0x0003Zaj?ty GG_STATUS_BUSY_DESCR0x0005Zaj?ty (z opisem) +GG_STATUS_DND0x0021Nie przeszkadza? +GG_STATUS_DND_DESCR0x0022Nie przeszkadza? (z opisem) GG_STATUS_INVISIBLE0x0014Niewidoczny GG_STATUS_INVISIBLE_DESCR0x0016Niewidoczny z opisem GG_STATUS_BLOCKED0x0006Zablokowany Modified: trunk/include/libgadu.h.in =================================================================== --- trunk/include/libgadu.h.in 2009-05-23 16:30:25 UTC (rev 721) +++ trunk/include/libgadu.h.in 2009-05-27 16:20:45 UTC (rev 722) @@ -1444,10 +1444,14 @@ #define GG_STATUS_NOT_AVAIL 0x0001 #define GG_STATUS_NOT_AVAIL_DESCR 0x0015 +#define GG_STATUS_FFC 0x0017 +#define GG_STATUS_FFC_DESCR 0x0018 #define GG_STATUS_AVAIL 0x0002 #define GG_STATUS_AVAIL_DESCR 0x0004 #define GG_STATUS_BUSY 0x0003 #define GG_STATUS_BUSY_DESCR 0x0005 +#define GG_STATUS_DND 0x0021 +#define GG_STATUS_DND_DESCR 0x0022 #define GG_STATUS_INVISIBLE 0x0014 #define GG_STATUS_INVISIBLE_DESCR 0x0016 #define GG_STATUS_BLOCKED 0x0006 @@ -1464,10 +1468,14 @@ enum { GG_STATUS_NOT_AVAIL, /**< Niedost?pny */ GG_STATUS_NOT_AVAIL_DESCR, /**< Niedost?pny z opisem */ + GG_STATUS_FFC, /**< PoGGadaj ze mn? */ + GG_STATUS_FFC_DESCR, /**< PoGGadaj ze mn? z opisem */ GG_STATUS_AVAIL, /**< Dost?pny */ GG_STATUS_AVAIL_DESCR, /**< Dost?pny z opisem */ GG_STATUS_BUSY, /**< Zaj?ty */ GG_STATUS_BUSY_DESCR, /**< Zaj?ty z opisem */ + GG_STATUS_DND, /**< Nie przeszkadza? */ + GG_STATUS_DND_DESCR, /**< Nie przeszakdza? z opisem */ GG_STATUS_INVISIBLE, /**< Niewidoczny (tylko w?asny status) */ GG_STATUS_INVISIBLE_DESCR, /**< Niewidoczny z opisem (tylko w?asny status) */ GG_STATUS_BLOCKED, /**< Zablokowany (tylko status innych) */ @@ -1492,11 +1500,13 @@ #define GG_STATUS_DESCR_MAXSIZE 0xff #define GG_STATUS_DESCR_MAXSIZE_PRE_8_0 70 +#define GG_STATUS_MASK 0xff + /* GG_S_F() tryb tylko dla znajomych */ #define GG_S_F(x) (((x) & GG_STATUS_FRIENDS_MASK) != 0) -/* GG_S() stan bez uwzgl?dnienia trybu tylko dla znajomych */ -#define GG_S(x) ((x) & ~(GG_STATUS_FRIENDS_MASK | GG_STATUS_VOICE_MASK)) +/* GG_S() stan bez uwzgl?dnienia dodatkowych flag */ +#define GG_S(x) ((x) & GG_STATUS_MASK) /* GG_S_A() dost?pny */ #define GG_S_A(x) (GG_S(x) == GG_STATUS_AVAIL || GG_S(x) == GG_STATUS_AVAIL_DESCR) @@ -1511,7 +1521,12 @@ #define GG_S_I(x) (GG_S(x) == GG_STATUS_INVISIBLE || GG_S(x) == GG_STATUS_INVISIBLE_DESCR) /* GG_S_D() stan opisowy */ -#define GG_S_D(x) (GG_S(x) == GG_STATUS_NOT_AVAIL_DESCR || GG_S(x) == GG_STATUS_AVAIL_DESCR || GG_S(x) == GG_STATUS_BUSY_DESCR || GG_S(x) == GG_STATUS_INVISIBLE_DESCR) +#define GG_S_D(x) (GG_S(x) == GG_STATUS_NOT_AVAIL_DESCR || \ + GG_S(x) == GG_STATUS_FFC_DESCR || \ + GG_S(x) == GG_STATUS_AVAIL_DESCR || \ + GG_S(x) == GG_STATUS_BUSY_DESCR || \ + GG_S(x) == GG_STATUS_DND_DESCR || \ + GG_S(x) == GG_STATUS_INVISIBLE_DESCR) /* GG_S_BL() blokowany lub blokuj?cy */ #define GG_S_BL(x) (GG_S(x) == GG_STATUS_BLOCKED) From libgadu-commit at lists.ziew.org Thu May 28 00:32:13 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Thu, 28 May 2009 00:32:13 +0200 (CEST) Subject: [libgadu-commit] r723 - trunk/docs Message-ID: <20090527223213.A1B5417B44@toxygen.net> Author: darkjames Date: 2009-05-28 00:32:13 +0200 (Thu, 28 May 2009) New Revision: 723 Modified: trunk/docs/protocol.html Log: Przyk?adowa wiadomo?? GGLive. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-27 16:20:45 UTC (rev 722) +++ trunk/docs/protocol.html 2009-05-27 22:32:13 UTC (rev 723) @@ -46,9 +46,10 @@ 1.8.  Ping, pong
    1.9.  Roz??czenie
    1.10.  Wiadomo?ci systemowe
    - 1.11.  Katalog publiczny
    - 1.12.  Lista kontakt?w
    - 1.13.  Indeks pakiet?w
    + 1.10.  Wiadomo?ci GGLive
    + 1.11.  Katalog publiczny
    + 1.12.  Lista kontakt?w
    + 1.13.  Indeks pakiet?w
  • Us?ugi HTTP
    2.1.  Format danych
    @@ -937,8 +938,46 @@
    -

    1.11. Katalog publiczny

    +

    1.11. Wiadomo?ci GGLive

    +
    +

    Opisa? us?ugi http://life.gadu-gadu.pl/
    +Logowanie OAuth: /login?oauth_consumer_key=UIN&oauth_nonce=....&oauth_signature=...&oauth_signature_method=HMAC-SHA1&oauth_timestamp=...&oauth_token=....&oauth_version=1.0
    +Wysy?anie: POST /send/message/?USER_IS_AUTHENTICATED=1&uin=UIN&token=TOKEN
    +message=Testowa+wiadomo%C5%9B%C4%87&send=Wy%C5%9Blij
    +
    +

    +
    +
    +
    #define GG_XML_ACTION 0x002c
    +
    + +

    +Przyk?adowa otrzymana wiadomo??: +

    +
    +
    +<events>
    +  <event id="13106118792229117994">
    +  <type>1</type>
    +  <sender>7496195</sender>
    +  <time>1243461221</time>
    +  <bodyXML>
    +     <serviceID>lifestreaming</serviceID>
    +     <msg><![CDATA[Testowa wiadomo??]]></msg>
    +     <link isLogin="0"></link>
    +     <creationTime>1243461221</creationTime>
    +  </bodyXML>
    + </event>
    +</events>
    +
    +
    + +
    + + +

    1.12. Katalog publiczny

    +

    Nowe Gadu-Gadu korzysta z OAutha do odczytu oraz zmian danych w katalogu, API opisane jest na: http://dev.gadu-gadu.pl/api/pages/gaduapi.html @@ -1059,8 +1098,8 @@


    - -

    1.12. Lista kontakt?w

    + +

    1.13. Lista kontakt?w

    Sprawdzi? czy wszystkie #define dalej s? potrzebne
    @@ -1152,8 +1191,8 @@
    - -

    1.13. Indeks pakiet?w

    + +

    1.14. Indeks pakiet?w

    Pakiety wysy?ane: From libgadu-commit at lists.ziew.org Thu May 28 23:36:09 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Thu, 28 May 2009 23:36:09 +0200 (CEST) Subject: [libgadu-commit] r724 - in trunk: docs include Message-ID: <20090528213609.CA7F317B40@toxygen.net> Author: darkjames Date: 2009-05-28 23:36:09 +0200 (Thu, 28 May 2009) New Revision: 724 Modified: trunk/docs/protocol.html trunk/include/libgadu.h.in Log: - Zal??ek dokumentacji o DCC7. - Zamiana dunno1 na size_hi w gg_dcc7_new. [xxx, tylko w .h] Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-27 22:32:13 UTC (rev 723) +++ trunk/docs/protocol.html 2009-05-28 21:36:09 UTC (rev 724) @@ -1215,7 +1215,7 @@ 0x0015GG_LOGIN60Logowanie przed GG 7.7 0x0016GG_USERLIST_REQUESTZapytanie listy kontakt?w na serwerze przed Nowym Gadu-Gadu 0x0019GG_LOGIN70Logowanie przed GG 8.0 -0x001fGG_DCC7_DUNNO1 +0x001fGG_DCC7_INFO 0x0020GG_DCC7_NEWInformacje o ch?ci nawi?zania po??czenia DCC 0x0021GG_DCC7_ACCEPTZaakceptowanie po??czenia DCC 0x0022GG_DCC7_REJECTOdrzucenie po??czenia DCC @@ -1253,7 +1253,7 @@ 0x0016GG_LOGIN_HASH_TYPE_INVALIDDany rodzaj hashowania has?a jest nieobs?ugiwany przez serwer 0x0017GG_STATUS77Zmiana stanu przed GG 8.0 0x0018GG_NOTIFY_REPLY77Stan listy kontakt?w przed GG 8.0 -0x001fGG_DCC7_DUNNO1 +0x001fGG_DCC7_INFO 0x0020GG_DCC7_NEWInformacje o ch?ci nawi?zania po??czenia DCC 0x0021GG_DCC7_ACCEPTZaakceptowanie po??czenia DCC 0x0022GG_DCC7_REJECTOdrzucenie po??czenia DCC @@ -1603,17 +1603,58 @@

    -Po??czenia s? mo?liwe jedynie w sytuacji, gdy co najmniej jedna ze stron -posiada publiczny adres IP. Je?li jest to strona wywo?ywana, wystarczy -po??czy? si? na podany adres IP i port. Gdy nie ma mo?liwo?ci po??czenia -si? ze stron? wywo?ywan?, nale?y wys?a? do niej wiadomo?? klasy -GG_CLASS_CTCP, zawieraj?c? jeden bajt o warto?ci 0x02. -Odebranie takiej wiadomo?ci powinno spowodowa? po??czenie bezpo?rednie -z nadawc?, w kt?rym role stron b?d? zamienione a? do momentu okre?lenia -rzeczywistego kierunku transmisji. +Dla ka?dego po??czenia musimy zdoby? od serwera 8 bajtowy identyfikator.

    +
    +
    typedef struct {
    +	unsigned char id[8];
    +} gg_dcc7_id_t;
    +
    +
    +

    +Aby pobra? identyfikator nale?y u?y? pakietu: +

    + +
    +
    +#define GG_DCC7_ID_REQUEST 0x0023
    +
    +struct gg_dcc7_id_request {
    +	int type;		/* rodzaj transmisji */
    +}
    +
    +
    + +

    +Pole type oznacza rodzaj transmisji: +

    + +
    +
    +#define GG_DCC7_TYPE_VOICE 0x00000001	/* Rozmowa g?osowa (ju? nieu?ywane) */
    +#define GG_DCC7_TYPE_FILE 0x00000004	/* Przesy?anie plik?w */
    +
    +
    + +

    +Na co serwer odpowie: +

    + +
    +
    +#define GG_DCC7_ID_REPLY 0x0023
    +
    +struct gg_dcc7_id_reply {
    +	int type;		/* Rodzaj transmisji */
    +	gg_dcc7_id_t id;	/* przyznany identyfikator */
    +}
    +
    +
    + +
    +

    Po nawi?zaniu po??czenia nale?y wys?a? pakiet zawieraj?cy numery Gadu-Gadu strony wywo?uj?cej i wywo?ywanej. W odr??nieniu od po??czenia z serwerem, w po??czeniach bezpo?rednich pakiety nie s? poprzedzane strukturami @@ -1665,73 +1706,99 @@ pakiet zale?ny od rodzaju po??czenia bezpo?redniego. Jak wida?, rzeczywisty kierunek transmisji jest ju? okre?lony.

    +

    3.2. Przesy?anie plik?w

    +
    W rodzaju transmisji (type) GG_DCC7_TYPE_FILE
    +

    -Aby powiadomi? o ch?ci przes?ania pliku, nale?y wys?a? nast?puj?ce pakiety. -Pierwszy okre?la rodzaj po??czenia, drugi zawiera szczeg??y dotycz?ce pliku. +Aby powiadomi? o ch?ci przes?ania pliku, nale?y wys?a? nast?puj?cy pakiet.

    -
    #define GG_DCC_REQUEST_SEND 0x0001
    +
    #define GG_DCC7_NEW 0x0020
     
    -struct gg_dcc_request {
    -	int type;	/* GG_DCC_REQUEST_SEND */
    -};
    +struct gg_dcc7_new {
    +	gg_dcc7_id_t id;	/* identyfikator po??czenia */
    +	int uin_from;		/* numer nadawcy */
    +	int uin_to;		/* numer odbiorcy */
    +	int type;		/* rodzaj transmisji */
    +	char filename[255];	/* nazwa pliku */
    +	long long size;		/* rozmiar pliku */
    +	char hash[20];		/* hash SHA1 (ju? nieu?ywane 00 00 00) */
    +};
    +
    -#define GG_DCC_FILE_INFO 0x0003 +

    +Strona wywo?ywana, w przypadku gdy u?ytkownik zaakceptuje pobranie pliku, +wysy?a pakiet: +

    -struct gg_dcc_file_info { - int type; /* GG_DCC_FILE_INFO */ - int unknown1; /* == 0 */ - int unknown2; /* == 0 */ +
    +
    #define GG_DCC7_ACCEPT 0x0021
     
    -	struct gg_file_info {
    -		int dwFileAttributes;		/* atrybuty pliku */
    -		long long ftCreationTime;	/* czas utworzenia pliku */
    -		long long ftLastAccessTime;	/* czas ostatniego dost?pu */
    -		long long ftLastWriteTime;	/* czas ostatniego zapisu */
    -		int nFileSizeHigh;		/* g?rne 32 bity rozmiaru */
    -		int nFileSizeLow;		/* dolne 32 bity rozmiaru */
    -		int dwReserved0;		/* == 0 */
    -		int dwReserved1;		/* == 0 */
    -		char cFileName[262];		/* nazwa pliku */
    -		char cAlternateFileName[14];	/* kr?tka nazwa pliku */
    -	} info;
    +struct gg_dcc7_accept {
    +	int uin;		/* numer przyjmuj?cego po??czenie */
    +	gg_dcc7_id_t id;	/* identyfikator po??czenia */
    +	int offset;		/* offset przy wznawianiu transmisji */
    +	int dunno1;		/* 0x00000000 (na 99% kontynuacja offsetu) */
     };

    -Struktura gg_file_info odpowiada strukturze WIN32_FIND_DATA -z API Win32. +Je?li plik zosta? ju? cz??ciowo odebrany i chcemy wznowi? przesy?anie, +w polu offset wystarczy poda? ile bajt?w ju? mamy, a odebrane +dane dopisa? na ko?cu pliku.

    -Strona wywo?ywana, w przypadku gdy u?ytkownik zaakceptuje pobranie pliku, -odsy?a pakiet: +Po zaakceptowaniu pliku, obie strony wysy?aj? pakiet GG_DCC7_INFO:

    -
    #define GG_DCC_SEND_ACK 0x0006
    +
    #define GG_DCC7_INFO 0x1f
     
    -struct gg_dcc_send_ack {
    -	int type;	/* GG_DCC_SEND_ACK */
    -	int offset;	/* od kt?rego zaczynamy przesy?anie */
    -	int unknown1;	/* == 0 */
    +struct gg_dcc7_info {
    +	int uin;		/* numer nadawcy */
    +	int type;		/* spos?b po??czenia */
    +	gg_dcc7_id_t id;	/* identyfikator po??czenia */
    +	char info[64];		/* informacje o po??czeniu "ip port" */
     };

    -Je?li plik zosta? ju? cz??ciowo odebrany i chcemy wznowi? przesy?anie, -w polu offset wystarczy poda? ile bajt?w ju? mamy, a odebrane -dane dopisa? na ko?cu pliku. +W polu type spos?b po??czenia:

    +
    +
    +#define GG_DCC7_TYPE_P2P 0x00000001	/* Po??czenie bezpo?rednie */
    +#define GG_DCC7_TYPE_SERVER 0x00000002	/* Po??czenie przez serwer */
    +
    +
    + +
    Opisa?
    +

    +Dla po??cze? bezpo?rednich przyk?adowa zawarto?? pola info: +

    + +
    +
    +0000   31 30 2e 30 2e 30 2e 32 20 32 32 35 36 33 00 00  10.0.0.2 22563..
    +0010   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    +0020   31 37 36 34 36 38 34 38 34 00 00 00 00 00 00 00  176468484.......
    +0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    +
    +
    + + +
    +

    Po zaakceptowaniu pliku, strona wywo?uj?ca przesy?a jego zawarto?? podzielon? na pakiety, a nast?pnie zamyka po??czenie.

    @@ -1755,12 +1822,45 @@ zadeklarowany w strukturze gg_file_info czy odbiera? dane a? do otrzymania pakietu typu GG_DCC_SEND_DATA_LAST, implementacji.

    +
    +

    +Je?li strona wywo?ana chce odrzuci? plik wysy?a pakiet: +

    + +
    +
    #define GG_DCC7_REJECT 0x0022
    +
    +struct gg_dcc7_reject {
    +	int uin;		/* Numer odrzucaj?cego po??czenie */
    +	gg_dcc7_id_t id;	/* Identyfikator po??czenia */
    +	int reason;		/* Pow?d roz??czenia */
    +};
    +
    + +

    +Dla pola reason znane s? warto?ci: +

    + +
    +
    +#define GG_DCC7_REJECT_BUSY	0x00000001	/* Po??czenie bezpo?rednie ju? trwa, nie umiem obs?u?y? wi?cej */
    +#define GG_DCC7_REJECT_USER	0x00000002	/* U?ytkownik odrzuci? po??czenie
    +#define GG_DCC7_REJECT_VERSION	0x00000006	/* Druga strona ma wersj? klienta nieobs?uguj?c? po??cze? bezpo?rednich tego typu
    +
    +
    + +

    3.3. Rozmowy g?osowe

    +
    +ZTCP to leci po SIP +
    + +

    Aby powiadomi? o ch?ci rozmowy g?osowej nale?y wys?a? pakiet:

    @@ -1826,9 +1926,11 @@ 195 bajt?w), a pocz?wszy od tej wersji przesy?a si? po 10 ramek GSM, poprzedzaj?c je bajtem zerowym (1 + 10 * 32,5 = 326 bajt?w).

    +

    +
     ----- 3) transmisja pliku: strona nadawcy -------------------------------------
     Nadawca wysy?a  po kolei:
    @@ -1893,6 +1995,7 @@
     4. je?li nag??wek by? typu GG_DCC_LAST_FILEHEADER to otrzymali?my ca?o??, 
     wi?c zamykamy po??czenie. Je?li nie, to wracamy do kroku 3.
     
    +

    Modified: trunk/include/libgadu.h.in =================================================================== --- trunk/include/libgadu.h.in 2009-05-27 22:32:13 UTC (rev 723) +++ trunk/include/libgadu.h.in 2009-05-28 21:36:09 UTC (rev 724) @@ -1932,7 +1932,7 @@ uint32_t type; /* rodzaj transmisji */ unsigned char filename[GG_DCC7_FILENAME_LEN]; /* nazwa pliku */ uint32_t size; /* rozmiar pliku */ - uint32_t dunno1; /* 0x00000000 */ + uint32_t size_hi; /* rozmiar pliku (starsze bajty) */ unsigned char hash[GG_DCC7_HASH_LEN]; /* hash SHA1 */ } GG_PACKED; From libgadu-commit at lists.ziew.org Fri May 29 01:30:06 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 29 May 2009 01:30:06 +0200 (CEST) Subject: [libgadu-commit] r725 - trunk/docs Message-ID: <20090528233006.D0F5717B40@toxygen.net> Author: darkjames Date: 2009-05-29 01:30:06 +0200 (Fri, 29 May 2009) New Revision: 725 Modified: trunk/docs/protocol.html Log: Drobne poprawki dokumentacji. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-28 21:36:09 UTC (rev 724) +++ trunk/docs/protocol.html 2009-05-28 23:30:06 UTC (rev 725) @@ -46,10 +46,10 @@ 1.8.  Ping, pong
    1.9.  Roz??czenie
    1.10.  Wiadomo?ci systemowe
    - 1.10.  Wiadomo?ci GGLive
    - 1.11.  Katalog publiczny
    - 1.12.  Lista kontakt?w
    - 1.13.  Indeks pakiet?w
    + 1.11.  Wiadomo?ci GGLive
    + 1.12.  Katalog publiczny
    + 1.13.  Lista kontakt?w
    + 1.14.  Indeks pakiet?w
  • Us?ugi HTTP
    2.1.  Format danych
    @@ -1623,8 +1623,7 @@ struct gg_dcc7_id_request { int type; /* rodzaj transmisji */ -} - +};

    @@ -1649,8 +1648,7 @@ struct gg_dcc7_id_reply { int type; /* Rodzaj transmisji */ gg_dcc7_id_t id; /* przyznany identyfikator */ -} - +};

    @@ -1784,7 +1782,7 @@
    Opisa?

    -Dla po??cze? bezpo?rednich przyk?adowa zawarto?? pola info: +Dla po??cze? bezpo?rednich przyk?adowa zawarto?? pola info:

    @@ -1796,7 +1794,6 @@
    -

    Po zaakceptowaniu pliku, strona wywo?uj?ca przesy?a jego zawarto?? podzielon? @@ -1850,7 +1847,6 @@

    -
    From libgadu-commit at lists.ziew.org Fri May 29 09:26:12 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 29 May 2009 09:26:12 +0200 (CEST) Subject: [libgadu-commit] r726 - trunk/docs Message-ID: <20090529072612.CD52417B44@toxygen.net> Author: darkjames Date: 2009-05-29 09:26:12 +0200 (Fri, 29 May 2009) New Revision: 726 Modified: trunk/docs/protocol.html Log: - Zmiana typu gg_dcc7_id_t na long long - Dodanie paru nowych informacji o GG_DCC7_INFO, wraz z przyk?adami. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-28 23:30:06 UTC (rev 725) +++ trunk/docs/protocol.html 2009-05-29 07:26:12 UTC (rev 726) @@ -1604,16 +1604,6 @@

    Dla ka?dego po??czenia musimy zdoby? od serwera 8 bajtowy identyfikator. -

    - -
    -
    typedef struct {
    -	unsigned char id[8];
    -} gg_dcc7_id_t;
    -
    -
    - -

    Aby pobra? identyfikator nale?y u?y? pakietu:

    @@ -1646,8 +1636,8 @@ #define GG_DCC7_ID_REPLY 0x0023 struct gg_dcc7_id_reply { - int type; /* Rodzaj transmisji */ - gg_dcc7_id_t id; /* przyznany identyfikator */ + int type; /* Rodzaj transmisji */ + long long id; /* przyznany identyfikator */ };
    @@ -1721,7 +1711,7 @@
    #define GG_DCC7_NEW 0x0020
     
     struct gg_dcc7_new {
    -	gg_dcc7_id_t id;	/* identyfikator po??czenia */
    +	long long id;		/* identyfikator po??czenia */
     	int uin_from;		/* numer nadawcy */
     	int uin_to;		/* numer odbiorcy */
     	int type;		/* rodzaj transmisji */
    @@ -1740,10 +1730,10 @@
     
    #define GG_DCC7_ACCEPT 0x0021
     
     struct gg_dcc7_accept {
    -	int uin;		/* numer przyjmuj?cego po??czenie */
    -	gg_dcc7_id_t id;	/* identyfikator po??czenia */
    -	int offset;		/* offset przy wznawianiu transmisji */
    -	int dunno1;		/* 0x00000000 (na 99% kontynuacja offsetu) */
    +	int uin;	/* numer przyjmuj?cego po??czenie */
    +	long long id;	/* identyfikator po??czenia */
    +	int offset;	/* offset przy wznawianiu transmisji */
    +	int dunno1;	/* 0x00000000 (na 99% kontynuacja offsetu) */
     };
    @@ -1754,20 +1744,23 @@

    -Po zaakceptowaniu pliku, obie strony wysy?aj? pakiet GG_DCC7_INFO: +Po zaakceptowaniu pliku, obie strony zaczynaj? nas?uchiwa? na losowo wybranym porcie i +wysy?aj? pakiet GG_DCC7_INFO z informacjami potrzebnymi do po??czenia.

    #define GG_DCC7_INFO 0x1f
     
     struct gg_dcc7_info {
    -	int uin;		/* numer nadawcy */
    -	int type;		/* spos?b po??czenia */
    -	gg_dcc7_id_t id;	/* identyfikator po??czenia */
    -	char info[64];		/* informacje o po??czeniu "ip port" */
    +	int uin;	/* numer nadawcy */
    +	int type;	/* spos?b po??czenia */
    +	long long id;	/* identyfikator po??czenia */
    +	char info[64];	/* informacje o po??czeniu */
     };
    +
    Rodzieli? info na info1, info2
    +

    W polu type spos?b po??czenia:

    @@ -1779,10 +1772,14 @@
    -
    Opisa?
    +

    +Dla po??cze? bezpo?rednich:
    +- pierwsze 32bajty pola info to IP <SPACJA> PORT,
    +- drugie 32bajty pola info to ip oraz port w innej postaci, niestety nie mamy informacji o algorytmie :) +

    -Dla po??cze? bezpo?rednich przyk?adowa zawarto?? pola info: +Przyk?adowa zawarto?? pola info dla 10.0.0.2:22563

    @@ -1794,6 +1791,35 @@
    +
    Opisa? protok??
    + +

    +Dla po??cze? przez serwer:
    +- pierwsze 32bajty pola info to GGidCHnumerek

    +Gdzie:
    +id to identyfikator po??czenia zapisany w cyferkach ASCII
    +numerek +

    + +

    +Przyk?adowa zawarto?? pola info dla po??czenia 0x00000a0600000b27
    +
    +$ echo 'ibase=16; 00000A0600000B27' | bc
    +11020886084391 +

    + +
    +
    +0000   47 47 31 31 30 32 30 38 38 36 30 38 34 33 39 31  GG11020886084391
    +0010   43 48 36 39 36 32 00 00 00 00 00 00 00 00 00 00  CH6962..........
    +0020   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    +0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    +
    +
    + +
    Opisa? protok??, sniffowa? 91.197.13.104:80
    + +

    Po zaakceptowaniu pliku, strona wywo?uj?ca przesy?a jego zawarto?? podzielon? @@ -1829,9 +1855,9 @@

    #define GG_DCC7_REJECT 0x0022
     
     struct gg_dcc7_reject {
    -	int uin;		/* Numer odrzucaj?cego po??czenie */
    -	gg_dcc7_id_t id;	/* Identyfikator po??czenia */
    -	int reason;		/* Pow?d roz??czenia */
    +	int uin;	/* Numer odrzucaj?cego po??czenie */
    +	long long id;	/* Identyfikator po??czenia */
    +	int reason;	/* Pow?d roz??czenia */
     };
    From libgadu-commit at lists.ziew.org Fri May 29 10:41:06 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 29 May 2009 10:41:06 +0200 (CEST) Subject: [libgadu-commit] r727 - trunk/docs Message-ID: <20090529084106.7334F17B40@toxygen.net> Author: darkjames Date: 2009-05-29 10:41:06 +0200 (Fri, 29 May 2009) New Revision: 727 Modified: trunk/docs/protocol.html Log: - Dodanie informacji o GG_DCC7_ABORT oraz GG_DCC7_ABORTED - Drobne poprawki. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-29 07:26:12 UTC (rev 726) +++ trunk/docs/protocol.html 2009-05-29 08:41:06 UTC (rev 727) @@ -1220,6 +1220,8 @@ 0x0021GG_DCC7_ACCEPTZaakceptowanie po??czenia DCC 0x0022GG_DCC7_REJECTOdrzucenie po??czenia DCC 0x0023GG_DCC7_ID_REQUEST +0x0024GG_DCC7_DUNNO1 +0x0025GG_DCC7_ABORT 0x0028GG_NEW_STATUS80BETAZmiana stanu przed Nowym Gadu-Gadu 0x0029GG_LOGIN80BETALogowanie przed Nowym Gadu-Gadu 0x002dGG_SEND_MSG80Wys?anie wiadomo?ci @@ -1258,6 +1260,7 @@ 0x0021GG_DCC7_ACCEPTZaakceptowanie po??czenia DCC 0x0022GG_DCC7_REJECTOdrzucenie po??czenia DCC 0x0023GG_DCC7_ID_REPLY +0x0025GG_DCC7_ABORTED 0x0027GG_XML_EVENTOdebrano wiadomo?? systemow? 0x002aGG_STATUS80BETAZmiana stanu przed Nowym Gadu-Gadu 0x002bGG_NOTIFY_REPLY80BETAStan listy kontakt?w przed Nowym Gadu-Gadu @@ -1608,8 +1611,7 @@

    -
    -#define GG_DCC7_ID_REQUEST 0x0023
    +
    #define GG_DCC7_ID_REQUEST 0x0023
     
     struct gg_dcc7_id_request {
     	int type;		/* rodzaj transmisji */
    @@ -1621,8 +1623,7 @@
     

    -
    -#define GG_DCC7_TYPE_VOICE 0x00000001	/* Rozmowa g?osowa (ju? nieu?ywane) */
    +
    #define GG_DCC7_TYPE_VOICE 0x00000001	/* Rozmowa g?osowa (ju? nieu?ywane) */
     #define GG_DCC7_TYPE_FILE 0x00000004	/* Przesy?anie plik?w */
     
    @@ -1632,8 +1633,7 @@

    -
    -#define GG_DCC7_ID_REPLY 0x0023
    +
    #define GG_DCC7_ID_REPLY 0x0023
     
     struct gg_dcc7_id_reply {
     	int type;	/* Rodzaj transmisji */
    @@ -1722,6 +1722,31 @@
     

    +Przed akceptacj? pliku przez stron? wywo?ywan?, u?ytkownik mo?e przerwa? +??danie wysy?aj?c pakiet: +

    + +
    +
    #define GG_DCC7_ABORT 0x0025
    +struct gg_dcc7_abort {
    +	long long id;		/* identyfikator po??czenia */
    +	int uin_from;		/* numer nadawcy */
    +	int uin_to;		/* numer odbiorcy */
    +};
    +
    + +

    +Strona wywo?ywana powinna otrzyma? pakiet: +

    + +
    +
    #define GG_DCC7_ABORTED 0x0025
    +struct gg_dcc7_aborted {
    +	long long id;		/* identyfikator po??czenia */
    +};
    +
    + +

    Strona wywo?ywana, w przypadku gdy u?ytkownik zaakceptuje pobranie pliku, wysy?a pakiet:

    @@ -1744,12 +1769,37 @@

    +Je?li strona wywo?ana chce odrzuci? plik wysy?a pakiet: +

    + +
    +
    #define GG_DCC7_REJECT 0x0022
    +
    +struct gg_dcc7_reject {
    +	int uin;	/* Numer odrzucaj?cego po??czenie */
    +	long long id;	/* Identyfikator po??czenia */
    +	int reason;	/* Pow?d roz??czenia */
    +};
    +
    + +

    +Dla pola reason znane s? warto?ci: +

    + +
    +
    #define GG_DCC7_REJECT_BUSY	0x00000001	/* Po??czenie bezpo?rednie ju? trwa, nie umiem obs?u?y? wi?cej */
    +#define GG_DCC7_REJECT_USER	0x00000002	/* U?ytkownik odrzuci? po??czenie
    +#define GG_DCC7_REJECT_VERSION	0x00000006	/* Druga strona ma wersj? klienta nieobs?uguj?c? po??cze? bezpo?rednich tego typu
    +
    +
    + +

    Po zaakceptowaniu pliku, obie strony zaczynaj? nas?uchiwa? na losowo wybranym porcie i wysy?aj? pakiet GG_DCC7_INFO z informacjami potrzebnymi do po??czenia.

    -
    #define GG_DCC7_INFO 0x1f
    +
    #define GG_DCC7_INFO 0x001f
     
     struct gg_dcc7_info {
     	int uin;	/* numer nadawcy */
    @@ -1766,8 +1816,7 @@
     

    -
    -#define GG_DCC7_TYPE_P2P 0x00000001	/* Po??czenie bezpo?rednie */
    +
    #define GG_DCC7_TYPE_P2P 0x00000001	/* Po??czenie bezpo?rednie */
     #define GG_DCC7_TYPE_SERVER 0x00000002	/* Po??czenie przez serwer */
     
    @@ -1847,32 +1896,6 @@

    -

    -Je?li strona wywo?ana chce odrzuci? plik wysy?a pakiet: -

    - -
    -
    #define GG_DCC7_REJECT 0x0022
    -
    -struct gg_dcc7_reject {
    -	int uin;	/* Numer odrzucaj?cego po??czenie */
    -	long long id;	/* Identyfikator po??czenia */
    -	int reason;	/* Pow?d roz??czenia */
    -};
    -
    - -

    -Dla pola reason znane s? warto?ci: -

    - -
    -
    -#define GG_DCC7_REJECT_BUSY	0x00000001	/* Po??czenie bezpo?rednie ju? trwa, nie umiem obs?u?y? wi?cej */
    -#define GG_DCC7_REJECT_USER	0x00000002	/* U?ytkownik odrzuci? po??czenie
    -#define GG_DCC7_REJECT_VERSION	0x00000006	/* Druga strona ma wersj? klienta nieobs?uguj?c? po??cze? bezpo?rednich tego typu
    -
    -
    -
    From libgadu-commit at lists.ziew.org Fri May 29 12:50:58 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 29 May 2009 12:50:58 +0200 (CEST) Subject: [libgadu-commit] r728 - trunk/docs Message-ID: <20090529105058.496D817B40@toxygen.net> Author: darkjames Date: 2009-05-29 12:50:57 +0200 (Fri, 29 May 2009) New Revision: 728 Modified: trunk/docs/protocol.html Log: - Jak uzyska? list? serwer?w po?rednicz?cych (relay.gadu-gadu.pl) - Dodano dla lepszej czytelno?ci gdzie si? ko?czy w?tek, a zaczyna inny.. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-29 08:41:06 UTC (rev 727) +++ trunk/docs/protocol.html 2009-05-29 10:50:57 UTC (rev 728) @@ -1703,6 +1703,8 @@
    W rodzaju transmisji (type) GG_DCC7_TYPE_FILE
    +

    3.2.1 GG_DCC7_TYPE_FILE - Jak powiadamia?, jak akceptowa? oraz jak odrzuca?

    +

    Aby powiadomi? o ch?ci przes?ania pliku, nale?y wys?a? nast?puj?cy pakiet.

    @@ -1798,7 +1800,83 @@ wysy?aj? pakiet GG_DCC7_INFO z informacjami potrzebnymi do po??czenia.

    +

    3.2.2 relay.gadu-gadu.pl - 91.197.13.102 albo tajemniczy host w podsieci 91.197.12.0/22

    + +

    +Oba hosty ??cz? si? r?wnie? z relay.gadu-gadu.pl:80 aby uzyska? list? serwer?w kt?re mog? po?redniczy? +w wymianie plik?w. +

    +
    +
    #define GG_DCC7_RELAY_REQUEST 0x0a
    +struct gg_dcc7_relay_req {
    +	int magic;	/* 0x0a */
    +	int len;	/* d?ugo?? ca?ego pakietu */
    +	long long id;	/* identyfikator po??czenia */
    +	short dunno1;	/* 0x01 0x00 */
    +	short dunno2;	/* 0x02 0x00 */
    +};
    +
    + +
    +Czy wysy?a zapytania DNS o relay.gadu-gadu.pl U mnie ??czy si? z 91.197.13.102, zapyta? nie widzia?em (cache?) +
    + +
    +Tak naprawd? z relay.gadu-gadu.pl ??cz? si? dwa razy. +Za pierwszym razem ??cz? si? wysy?aj?c w dunno1: 08 00. +Odpowiada te? dwoma rekordami, ale w port jest 00 00 +
    + +

    +Przyk?adowe pytanie o serwery dla po??czenia 0x160600000bd4 +

    + +
    +
    +0000  0a 00 00 00 14 00 00 00 d4 0b 00 00 06 16 00 00
    +0010  01 00 02 00
    +
    +
    + +

    +Serwer odpowiada: +

    + +
    +
    #define GG_DCC7_RELAY_REPLY 0x0b
    +struct gg_dcc7_relay_rely {
    +	int magic;	/* 0x0b */
    +	int len;	/* d?ugo?? ca?ego pakietu */
    +	int rcount;	/* prawdopodobnie ilo?? po?rednicz?cych serwer?w */
    +	struct {
    +		int ip;		/* adres ip serwera */
    +		int port;	/* port serwera */
    +		char family;	/* rodzina adres?w (na ko?cu?!) AF_INET=2 */
    +	} proxies[rcount];
    +};
    + +
    +
    + +

    +Przyk?adowa odpowied? serwera zawieraj?ca 2 rekordy:
    + - 91.197.13.104:80
    + - 91.197.13.104:443
    +

    + +
    +
    +0000  0b 00 00 00 1a 00 00 00 02 00 00 00 5b c5 0d 68
    +0010  50 00 02 5b c5 0d 68 bb 01 02
    +
    +
    + +

    + +

    3.2.3 GG_DCC7_INFO - Jak si? odnale?? w mroku

    + +
    #define GG_DCC7_INFO 0x001f
     
     struct gg_dcc7_info {
    
    
    From libgadu-commit at lists.ziew.org  Fri May 29 13:14:35 2009
    From: libgadu-commit at lists.ziew.org (Libgadu commit list)
    Date: Fri, 29 May 2009 13:14:35 +0200 (CEST)
    Subject: [libgadu-commit]  r729 - trunk/docs
    Message-ID: <20090529111435.A6CD117B40@toxygen.net>
    
    Author: darkjames
    Date: 2009-05-29 13:14:35 +0200 (Fri, 29 May 2009)
    New Revision: 729
    
    Modified:
       trunk/docs/protocol.html
    Log:
    - Kr?tkie opisy protoko?u.
    - Poprawka typu danych dla portu (int->short)
    
    Modified: trunk/docs/protocol.html
    ===================================================================
    --- trunk/docs/protocol.html	2009-05-29 10:50:57 UTC (rev 728)
    +++ trunk/docs/protocol.html	2009-05-29 11:14:35 UTC (rev 729)
    @@ -1851,7 +1851,7 @@
     	int rcount;	/* prawdopodobnie ilo?? po?rednicz?cych serwer?w */
     	struct {
     		int ip;		/* adres ip serwera */
    -		int port;	/* port serwera */
    +		short port;	/* port serwera */
     		char family;	/* rodzina adres?w (na ko?cu?!) AF_INET=2 */
     	} proxies[rcount];
     };
    @@ -1918,7 +1918,15 @@
    -
    Opisa? protok??
    +
    Opis protoko?u na szybko:
    +Po po??czeniu wysy?amy dcc_id(8b)
    +Je?li dobrze si? po??czyli?my to powinni?my dosta? taki sam :)
    +
    +je?li mamy wysy?a? plik: wysy?amy
    +je?li mamy odbiera? plik: odbieramy :)
    +
    +Finito. +

    Dla po??cze? przez serwer:
    @@ -1944,9 +1952,16 @@ -

    Opisa? protok??, sniffowa? 91.197.13.104:80
    +
    Opis protoko?u na szybko, po po??czeniu do serwer po?rednicz?cego:
    +po po??czeniu dcc_id(8b), dunno1(4b)
    +serwer odpowiada nam tym samym.
    +
    +je?li mamy wysy?a? plik: wysy?amy
    +je?li mamy odbiera? plik: odbieramy :)
    +
    +Finito. +
    -

    Po zaakceptowaniu pliku, strona wywo?uj?ca przesy?a jego zawarto?? podzielon? From libgadu-commit at lists.ziew.org Fri May 29 23:19:45 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Fri, 29 May 2009 23:19:45 +0200 (CEST) Subject: [libgadu-commit] r730 - trunk/docs Message-ID: <20090529211945.463B817B44@toxygen.net> Author: darkjames Date: 2009-05-29 23:19:44 +0200 (Fri, 29 May 2009) New Revision: 730 Modified: trunk/docs/protocol.html Log: Usuni?cie nieaktualnych informacji o po??czeniach bezpo?rednich oraz uzupe?nienie informacji o nowym protokole. Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-29 11:14:35 UTC (rev 729) +++ trunk/docs/protocol.html 2009-05-29 21:19:44 UTC (rev 730) @@ -1641,61 +1641,6 @@ };

    -
    -

    -Po nawi?zaniu po??czenia nale?y wys?a? pakiet zawieraj?cy numery Gadu-Gadu -strony wywo?uj?cej i wywo?ywanej. W odr??nieniu od po??czenia z serwerem, -w po??czeniach bezpo?rednich pakiety nie s? poprzedzane strukturami -gg_header. -

    - -
    -
    struct gg_dcc_welcome {
    -	int uin;	/* numer strony wywo?uj?cej */
    -	int peer_uin;	/* numer strony wywo?ywanej */
    -};
    -
    - -

    -Strona wywo?ywana sprawdza, czy nadawca istnieje w li?cie kontakt?w i czy -??czy si? z tego samego adresu, kt?ry zg?osi? serwerowi. Gdy kt?ry? z -parametr?w si? nie zgadza, po??czenie nale?y ze wzgl?d?w bezpiecze?stwa -zerwa?. Pomy?lna autoryzacja jest sygnalizowana przez wys?anie do strony -wywo?uj?cej pakietu: -

    - -
    -
    struct gg_dcc_welcome_ack {
    -	int ack;	/* warto?? 0x47414455, tekst "UDAG" */
    -};
    -
    - -

    -Strona wywo?uj?ca nast?pnie wysy?a pakiet, w kt?rym okre?la kto w?a?ciwie -ma rozpocz?? transmisj?: -

    - -
    -
    #define GG_DCC_DIRECTION_IN 0x0002
    -#defnie GG_DCC_DIRECTION_OUT 0x0003
    -
    -struct gg_dcc_direction {
    -	int type;	/* w kt?r? stron? po??czenie? */
    -};
    -
    - -

    -Je?li strona wywo?uj?ca by?a stron? inicjuj?c? po??czenie bezpo?rednie (nie -chodzi o po??czenie TCP, a o ??danie u?ytkownika), wysy?a -GG_DCC_DIRECTION_IN, a nast?pnie wysy?a pakiety zale?ne od rodzaju -po??czenia bezpo?redniego, opisane w dalszych rozdzia?ach. Gdy strona -wywo?uj?ca zosta?a poproszona o po??czenie za pomoc? wiadomo?ci klasy -GG_CLASS_CTCP, wysy?a GG_DCC_DIRECTION_OUT i oczekuje na -pakiet zale?ny od rodzaju po??czenia bezpo?redniego. Jak wida?, rzeczywisty -kierunek transmisji jest ju? okre?lony. -

    -
    -
    @@ -1790,8 +1735,8 @@
    #define GG_DCC7_REJECT_BUSY	0x00000001	/* Po??czenie bezpo?rednie ju? trwa, nie umiem obs?u?y? wi?cej */
    -#define GG_DCC7_REJECT_USER	0x00000002	/* U?ytkownik odrzuci? po??czenie
    -#define GG_DCC7_REJECT_VERSION	0x00000006	/* Druga strona ma wersj? klienta nieobs?uguj?c? po??cze? bezpo?rednich tego typu
    +#define GG_DCC7_REJECT_USER	0x00000002	/* U?ytkownik odrzuci? po??czenie */
    +#define GG_DCC7_REJECT_VERSION	0x00000006	/* Druga strona ma wersj? klienta nieobs?uguj?c? po??cze? bezpo?rednich tego typu */
     
    @@ -1918,22 +1863,31 @@ -
    Opis protoko?u na szybko:
    -Po po??czeniu wysy?amy dcc_id(8b)
    -Je?li dobrze si? po??czyli?my to powinni?my dosta? taki sam :)
    -
    -je?li mamy wysy?a? plik: wysy?amy
    -je?li mamy odbiera? plik: odbieramy :)
    -
    -Finito. +

    +Po udanym po??czeniu na podany adres w GG_DCC7_INFO wysy?amy pakiet powitalny: +

    + +
    +
    struct gg_dcc7_welcome_p2p {
    +	long long id;	/* identyfikator po??czenia */
    +};

    +Druga strona powinna odpowiedzie? tym samym. Teraz ju? mo?emy albo wysy?a? albo odbiera? plik. +

    +
    +Z powodu tego ?e obie strony ??cz? si? w tym samym momencie mo?liwy jest wy?cig. +Z tego co zauwa?y?em gdy jednak ze stron zorientuje si? ?e na innym po??czeniu dostali?my ju? ten id, +to po??czenie jest zrywane - ale czy taki spos?b rozwi?zywania nie powoduje mo?liwych wy?cig?w? +
    + +

    Dla po??cze? przez serwer:
    - pierwsze 32bajty pola info to GGidCHnumerek

    Gdzie:
    id to identyfikator po??czenia zapisany w cyferkach ASCII
    -numerek +numerek TBD

    @@ -1952,42 +1906,21 @@

    -
    Opis protoko?u na szybko, po po??czeniu do serwer po?rednicz?cego:
    -po po??czeniu dcc_id(8b), dunno1(4b)
    -serwer odpowiada nam tym samym.
    -
    -je?li mamy wysy?a? plik: wysy?amy
    -je?li mamy odbiera? plik: odbieramy :)
    -
    -Finito. -
    - -

    -Po zaakceptowaniu pliku, strona wywo?uj?ca przesy?a jego zawarto?? podzielon? -na pakiety, a nast?pnie zamyka po??czenie. +Po po??czeniu do serwera po?rednicz?cego wysy?amy pakiet powitalny:

    -
    #define GG_DCC_SEND_DATA 0x0003
    -#define GG_DCC_SEND_DATA_LAST 0x0002
    -
    -struct gg_dcc_send_data {
    -	int type;	/* typ pakietu */
    -	int length;	/* rozmiar pakietu */
    -	char data[];	/* dane */
    +
    struct gg_dcc7_welcome_server {
    +	long long id;	/* identyfikator po??czenia */
    +	short dunno1;	/* 06 0a */
    +	short dunno2;	/* 00 00 */
     };

    -Domy?lnie dane s? dzielone na pakiety o rozmiarze 4096 bajt?w. Ostatni pakiet -danych jest oznaczany typem GG_DCC_SEND_DATA_LAST, podczas gdy -pozosta?e GG_DCC_SEND_DATA. Podczas implementacji dobrze by?o by -rozwa?y?, czy strona wywo?ywana powinna odebra? nie wi?cej ni? rozmiar pliku -zadeklarowany w strukturze gg_file_info czy odbiera? dane a? do -otrzymania pakietu typu GG_DCC_SEND_DATA_LAST, implementacji. +Serwer powinien odpowiedzie? tym samym. Teraz ju? mo?emy albo wysy?a? albo odbiera? plik.

    -

    From libgadu-commit at lists.ziew.org Sun May 31 23:45:49 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sun, 31 May 2009 23:45:49 +0200 (CEST) Subject: [libgadu-commit] r733 - trunk/docs Message-ID: <20090531214549.9C5E217B49@toxygen.net> Author: darkjames Date: 2009-05-31 23:45:49 +0200 (Sun, 31 May 2009) New Revision: 733 Modified: trunk/docs/protocol.html Log: Brak zamkniecia taga... Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-31 21:26:55 UTC (rev 732) +++ trunk/docs/protocol.html 2009-05-31 21:45:49 UTC (rev 733) @@ -1912,7 +1912,7 @@
    struct gg_dcc7_welcome_server {
    -	int dunno1;	/* 0xc0debabe */
    +	int dunno1;	/* 0xc0debabe */
     	long long id;	/* identyfikator po??czenia */
     };
    From libgadu-commit at lists.ziew.org Sun May 31 23:23:56 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sun, 31 May 2009 23:23:56 +0200 (CEST) Subject: [libgadu-commit] r731 - trunk/docs Message-ID: <20090531212357.105DE17B40@toxygen.net> Author: darkjames Date: 2009-05-31 23:23:56 +0200 (Sun, 31 May 2009) New Revision: 731 Modified: trunk/docs/protocol.html Log: Poprawka opisu strukturki gg_dcc7_welcome_server w dokumentacji, c0de babe! (Daniel Zaborowski) Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-29 21:19:44 UTC (rev 730) +++ trunk/docs/protocol.html 2009-05-31 21:23:56 UTC (rev 731) @@ -1912,9 +1912,8 @@
    struct gg_dcc7_welcome_server {
    +	int dunno1;	/* 0xc0debabe */
     	long long id;	/* identyfikator po??czenia */
    -	short dunno1;	/* 06 0a */
    -	short dunno2;	/* 00 00 */
     };
    From libgadu-commit at lists.ziew.org Sun May 31 23:26:56 2009 From: libgadu-commit at lists.ziew.org (Libgadu commit list) Date: Sun, 31 May 2009 23:26:56 +0200 (CEST) Subject: [libgadu-commit] r732 - trunk/docs Message-ID: <20090531212656.64E4017B47@toxygen.net> Author: darkjames Date: 2009-05-31 23:26:55 +0200 (Sun, 31 May 2009) New Revision: 732 Modified: trunk/docs/protocol.html Log: Usuni?cie nieaktualnej dokumentacji (2/2) Modified: trunk/docs/protocol.html =================================================================== --- trunk/docs/protocol.html 2009-05-31 21:23:56 UTC (rev 731) +++ trunk/docs/protocol.html 2009-05-31 21:26:55 UTC (rev 732) @@ -2000,75 +2000,6 @@
    -
    -
    ------ 3) transmisja pliku: strona nadawcy -------------------------------------
    -Nadawca wysy?a  po kolei:
    -
    -	#define GG_DCC_HAVE_FILE     0x0001
    -	#define GG_DCC_HAVE_FILEINFO 0x0003
    -	int unknown1; /* 0 */
    -	int unknown2; /* 0 */
    -	file_info_struct finfo;
    -
    -Podejrzewam, ?e unknown2:unknown1 jest pozycj? w pliku, od kt?rej nadawca 
    -chce wysy?a? plik, ale nie uda?o mi si? zasymulowa? sytuacji, w kt?rej 
    -by?yby u?ywane.
    -
    -	struct file_info_struct {
    -        	int mode;                  /* dwFileAttributes */
    -        	int ctime[2];              /* ftCreationTime */
    -        	int atime[2];              /* ftLastAccessTime */
    -        	int mtime[2];              /* ftLastWriteTime */
    -		int size_hdw;              /* g?rne 4 bajty d?ugo?ci pliku */
    -		int size_ldw;              /* dolne 4 bajty d?ugo?ci pliku */
    -		int reserved1;             /* 0 */
    -		int reserved2;             /* 0 */
    -		char file_name[276];       /* tablica zaczynaj?ca si? od nazwy 
    -					      pliku, wype?niona zerami */
    -	};
    -
    -Dalej nadawca czeka na akceptacj? odbiorcy, czyli nast?puj?c? struktur?:
    -	
    -	struct {
    -		int type;      /* 0x0006 GG_DCC_GIMME_FILE */
    -		int start;     /* od kt?rej pozycji zacz?? przesy?anie */
    -		int unknown;   /* 0 */
    -	};
    -
    -Teraz mo?emy zacz?? przesy?anie pliku. Plik przesy?amy w paczkach d?ugo?ci 
    -ustalonej przez nadawc?. Przed ka?d? paczk? z danymi nadawca wysy?a nag??wek
    -paczki:
    -	struct {
    -		int type;       /* 0x0003 GG_DCC_FILEHEADER, je?li paczka nie 
    -				   jest ostatnia. 0x0002 GG_DCC_LAST_FILEHEADER
    -				   wpp. */
    -		int chunk_size; /* rozmiar paczki */
    -		int unknown;    /* 0 */
    -	};
    -
    -Po wys?aniu ostatniej paczki zamykamy po??czenie. Plik zosta? przes?any.
    -
    ------ 4) transmisja pliku: strona odbiorcy ------------------------------------
    -Zachowanie odbiorcy jest symetryczne:
    -1. odbiera kolejno 
    -	GG_DCC_HAVE_FILE
    -	GG_DCC_HAVE_FILEINFO
    -	int unknown1;
    -	int unknown2;
    -	file_info_struct finfo;
    -
    -2. je?li u?ytkownik zgodzi si? odebra? plik, to wysy?amy struktur? jakiej
    -odbiorca si? spodziewa.
    -
    -3. otrzymujemy nag??wek paczki i paczk? z danymi zadeklarowanej d?ugo?ci
    -4. je?li nag??wek by? typu GG_DCC_LAST_FILEHEADER to otrzymali?my ca?o??, 
    -wi?c zamykamy po??czenie. Je?li nie, to wracamy do kroku 3.
    -
    -
    - -
    -

    4. Autorzy