diff -urN ekg-1.4.org/lib/events.c ekg-1.4/lib/events.c --- ekg-1.4.org/lib/events.c 2003-10-20 23:21:16.000000000 +0200 +++ ekg-1.4/lib/events.c 2003-11-18 00:46:56.000000000 +0100 @@ -1311,16 +1311,19 @@ sess->fd = -1; break; } - + if (h->type != GG_WELCOME) { - gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() invalid packet received\n"); + if (h->type == GG_NEED_EMAIL) + gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() email change needed\n"); + else + gg_debug(GG_DEBUG_MISC, "// gg_watch_fd() invalid packet received\n"); free(h); close(sess->fd); sess->fd = -1; errno = EINVAL; e->type = GG_EVENT_CONN_FAILED; - e->event.failure = GG_FAILURE_INVALID; + e->event.failure = (h->type == GG_NEED_EMAIL) ? GG_FAILURE_NEED_EMAIL : GG_FAILURE_INVALID; sess->state = GG_STATE_IDLE; break; } diff -urN ekg-1.4.org/lib/libgadu.c ekg-1.4/lib/libgadu.c --- ekg-1.4.org/lib/libgadu.c 2003-10-27 22:29:12.000000000 +0100 +++ ekg-1.4/lib/libgadu.c 2003-11-03 19:30:06.000000000 +0100 @@ -70,7 +70,7 @@ #ifdef __GNUC__ __attribute__ ((unused)) #endif -= "$Id$"; += "$Id$"; #endif /* @@ -1460,7 +1460,7 @@ } if (!userlist || !count) - return 0; + return gg_send_packet(sess, GG_LIST_EMPTY, NULL); if (!(n = (struct gg_notify*) malloc(sizeof(*n) * count))) return -1; diff -urN ekg-1.4.org/lib/libgadu.h ekg-1.4/lib/libgadu.h --- ekg-1.4.org/lib/libgadu.h 2003-11-17 23:44:22.000000000 +0100 +++ ekg-1.4/lib/libgadu.h 2003-11-22 19:49:59.000000000 +0100 @@ -1,4 +1,4 @@ -/* $Id$ */ +/* $Id$ */ /* * (C) Copyright 2001-2003 Wojtek Kaniewski @@ -436,7 +436,8 @@ GG_FAILURE_404, /* XXX nieużywane */ - GG_FAILURE_TLS /* błąd negocjacji TLS */ + GG_FAILURE_TLS, /* błąd negocjacji TLS */ + GG_FAILURE_NEED_EMAIL /* serwer rozłączył nas z prośbą o zmianę emaila */ }; /* @@ -944,6 +945,7 @@ } GG_PACKED; #define GG_WELCOME 0x0001 +#define GG_NEED_EMAIL 0x0014 struct gg_welcome { uint32_t key; /* klucz szyfrowania hasła */ @@ -1071,6 +1073,8 @@ #define GG_USER_OFFLINE 0x01 /* będziemy niewidoczni dla użytkownika */ #define GG_USER_NORMAL 0x03 /* zwykły użytkownik */ #define GG_USER_BLOCKED 0x04 /* zablokowany użytkownik */ + +#define GG_LIST_EMPTY 0x0012 #define GG_NOTIFY_REPLY 0x000c /* tak, to samo co GG_LOGIN */