# HG changeset patch # User Eric Warmenhoven # Date 966390839 0 # Node ID 150214f1d48bdc9a61aad337889fd380a0b3b3a0 # Parent 30a8e386849df273070612cc6ad97fb5234fa011 [gaim-migrate @ 704] bah. oscar sucks a fat one. committer: Tailor Script diff -r 30a8e386849d -r 150214f1d48b src/buddy_chat.c --- a/src/buddy_chat.c Wed Aug 16 01:10:22 2000 +0000 +++ b/src/buddy_chat.c Wed Aug 16 01:53:59 2000 +0000 @@ -60,6 +60,23 @@ } +struct conversation *find_chat(char *name) +{ + char cuser[64]; + struct conversation *c = NULL; + GList *cnv = buddy_chats; + + strcpy(cuser, normalize(name)); + + while (cnv) { + c = (struct conversation *)cnv->data; + if (!strcasecmp(cuser, normalize(c->name))) { + return c; + } + cnv = cnv->next; + } + return NULL; +} static void do_join_chat() diff -r 30a8e386849d -r 150214f1d48b src/gaim.h --- a/src/gaim.h Wed Aug 16 01:10:22 2000 +0000 +++ b/src/gaim.h Wed Aug 16 01:53:59 2000 +0000 @@ -397,7 +397,7 @@ #define TYPE_SIGNOFF 4 #define TYPE_KEEPALIVE 5 -#define REVISION "gaim:$Revision: 698 $" +#define REVISION "gaim:$Revision: 704 $" #define FLAPON "FLAPON\r\n\r\n" #define ROAST "Tic/Toc" @@ -538,6 +538,7 @@ /* Functions in buddy_chat.c */ extern void join_chat(); +extern struct conversation *find_chat(char *name); extern void chat_write(struct conversation *, char *, int, char *); extern void add_chat_buddy(struct conversation *, char *); extern void remove_chat_buddy(struct conversation *, char *); diff -r 30a8e386849d -r 150214f1d48b src/oscar.c --- a/src/oscar.c Wed Aug 16 01:10:22 2000 +0000 +++ b/src/oscar.c Wed Aug 16 01:53:59 2000 +0000 @@ -125,17 +125,21 @@ if (cnv) { make_direct(cnv, FALSE, NULL, 0); } + aim_conn_kill(gaim_sess, &conn); } else if (conn->type = AIM_CONN_TYPE_CHAT) { - /* FIXME! we got kicked out of chat */ - } - aim_conn_kill(gaim_sess, &conn); - if (!aim_getconn_type(gaim_sess, AIM_CONN_TYPE_BOS)) { + struct chat_connection *c = find_oscar_chat(conn->priv); + if (c) { + struct conversation *cnv = find_chat(c->name); + char closebuf[128]; + close_callback(NULL, cnv); + sprintf(closebuf, _("You have been disconnected from %s"), cnv->name); + do_error_dialog(closebuf, _("Disconnected")); + } + } else if (conn->type == AIM_CONN_TYPE_BOS) { debug_print(_("major connection error\n")); signoff(); hide_login_progress(_("Disconnected.")); - aim_logoff(gaim_sess); auth_failed(); - gdk_input_remove(inpa); } } } diff -r 30a8e386849d -r 150214f1d48b src/server.c --- a/src/server.c Wed Aug 16 01:10:22 2000 +0000 +++ b/src/server.c Wed Aug 16 01:53:59 2000 +0000 @@ -591,12 +591,12 @@ b->name, count); debug_print(debug_buff); - aim_chat_leaveroom(gaim_sess, b->name); +// aim_chat_leaveroom(gaim_sess, b->name); c = find_oscar_chat(b->name); if (c != NULL) { - aim_conn_kill(gaim_sess, &c->conn); oscar_chats = g_list_remove(oscar_chats, c); gdk_input_remove(c->inpa); + aim_conn_kill(gaim_sess, &c->conn); g_free(c->name); g_free(c); }